function faktorialfunc(n:longint):longint;
var
f,k:longint;
begin
f:=1;
for k:=1 to n do
f:=f*k;
faktorialfunc:=f;
end;
procedure faktorialproc(n:longint;var hasil:longint);
var
f,k:longint;
begin
f:=1;
for k:=1 to n do
f:=f*k;
hasil:=f;
end;
function faktorialfuncrekursif(n:longint):longint;
begin
if n=0 then
faktorialfuncrekursif:=1
else
faktorialfuncrekursif:=n*faktorialfuncrekursif(n-1);
end;
procedure faktorialprocrek(n:longint;var hasil:longint);
var
h:longint;
begin
if n=0 then
hasil:=1
else
begin
faktorialprocrek(n-1,h);
hasil:=n*h;
end;
end;