/******************************************************/
/* This program evaluates the Factorial function (n!) */
/* using recursion.                                   */
/******************************************************/
rfact:
     procedure options(main);
     declare 
        i fixed;
     do i = 0 repeat(i+1);
        put skip list('factorial(',i,')=',factorial(i));
     end;
     stop;

     factorial:
          procedure(i) returns(fixed) recursive;
          declare 
             i fixed;
          if i = 0 then return (1);
          return (i * factorial(i-1));
     end factorial;

end rfact;

