Factorial

From Rosetta Code
Task
Factorial
You are encouraged to solve this task according to the task description, using any language you may know.

The Factorial Function is the product of a sequence n, n-1, n-2...1 starting at the input number to the function.

Write a function to factorialise a number. Solutions can be iterative or recursive (though recursive solutions are generally considered too slow and are mostly used as an exercise in recursion). Support for negative n errors is optional.

References

Wikipedia

Python

Iterative

<python>def factorial(n):

   z=n
   while n>1:
       n=n-1
       z=z*n
   return z

</python>

Recursive

<python>def factorial(n):

   z=1
   if n>1:
       z=n*factorial(n-1)
   return z

</python>

ALGOL 68

Iterative

PROC factorial = (INT in n)LONG LONG INT:(
  INT n := in n;
  LONG LONG INT z := n;
  WHILE n>1 DO
    n -:= 1;
    z *:= n
  OD;
  z
); ~

Recursive

PROC factorial = (INT n)LONG LONG INT:(
  IF n>1 THEN
    n*factorial(n-1)
  ELSE
    1
  FI
); ~