Factorial: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
Line 21: Line 21:
z=n*factorial(n-1)
z=n*factorial(n-1)
return z
return z
</python>
=={{header|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
); ~

Revision as of 03:08, 17 August 2008

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
); ~