Definitions

   The factorial of   0   (zero)   is defined as being   1   (unity).
   The   Factorial Function   of a positive integer,    n,    is defined as the product of the sequence:
                 n,   n-1,   n-2,   ...   1 



Task

Write a function to return the factorial of a number.

Solutions can be iterative or recursive.

Support for trapping negative    n    errors is optional.



Related task

   Primorial numbers


factorial = proc (n: int) returns (int) signals (negative)
    if n<0 then signal negative
    elseif n=0 then return(1)
    else return(n * factorial(n-1))
    end
end factorial
 
start_up = proc ()
    po: stream := stream$primary_output()
 
    for i: int in int$from_to(0, 10) do
        fac: int := factorial(i)
        stream$putl(po, int$unparse(i) || "! = " || int$unparse(fac))
    end
end start_up