/* Rexx */

Say Factorial( 99 )

Exit

/* * */

Factorial: procedure
Arg N      

If N = 0 then 
 Return 1
Else 
 Return FactorialFactorial( N, N )

/* * */

FactorialFactorial: procedure
Arg N, Acc      

If N = 1 then 
 Return Acc
Else 
 Return FactorialFactorial( N - 1, Acc * ( N - 1 ) )
