class MAIN is -- recursive fact(a: INTI):INTI is if a < 1.inti then return 1.inti; end; return a * fact(a - 1.inti); end; -- iterative fact_iter(a:INTI):INTI is s ::= 1.inti; loop s := s * a.downto!(1.inti); end; return s; end; main is a :INTI := 10.inti; #OUT + fact(a) + " = " + fact_iter(a) + "\n"; end; end;