MODULE Factorial; FROM InOut IMPORT WriteCard, WriteLn; PROCEDURE Fact(n:CARDINAL):CARDINAL; VAR nfact: CARDINAL; BEGIN IF n > 8 THEN RETURN 0 END; nfact:=1; FOR n:=n TO 1 BY -1 DO nfact:=nfact*n END; RETURN nfact; END Fact; VAR i:CARDINAL; BEGIN FOR i:=0 TO 8 DO WriteCard(i,3); WriteCard(Fact(i),12); WriteLn END END Factorial.
   0		1
   1            1
   2            2
   3            6
   4            24
   5            120
   6		720
   7		5040
   8		40320