Funkcja "Silnia"

Z uwagi na szybkość wzrostu wartości funkcji - można rozważyć użycie typu np. extended zamiast typów całkowitych które dają możliowść obliczenia maksymalnie wartości 12!

zwykła

function silnia1(n:integer):integer;
var s,i:integer;
begin
 s:=1;
 for i:=1 to n do
  s:=s*i;
 Result:=s;
end;

rekurencyjna

Przykład abstrahuje od kwestii poprawności wywołania (tj. sprawdzania czy n>=0)

function silnia2(n:integer):integer;
begin
 if n<=1 then Result:=1
         else Result:=n*silnia2(n-1);
end;