Rekurzív algoritmusok - példaprogramok

1.
program Faktorialis;
uses Crt;
var N: integer;

function  FaktIter(N: integer): longint;  {Iterációs megoldás}
var i: integer;
    fakt: longint;
begin
  fakt := 1;
  for i: = 2 to N do fakt := fakt * i;
  FaktIter := Fakt
end;

function FaktRek(N: integer): longint;    {Rekurzív megoldás}
begin
  if N = 1 then 
    FaktRek := 1                          {Triviális eset}
  else  
    FaktRek := n * FaktRek(n-1)           {Visszavezetés az egyszerűbbre}
end;

begin
  ReadLn(N);
  WriteLn(FaktIter(N));
  WriteLn(FaktRek(N));
  ReadKey
end.
2.
program Fibon_Rek;
uses Crt;
var n: byte;

function Fibo(n: byte): integer;
begin
  if (n = 0) or ( n = 1) then 
    Fibo := 1                      {Triviális eset}
  else
    Fibo := Fibo(n-1) + Fibo(n-2)  {Visszavezetés az egyszerűbbre}
end;

begin
  ClrScr;
  ReadLn(n);
  WriteLn(Fibo(n));
  ReadKey
end.