**CSE 130 Winter 2004
**

Principles of Programming Languages

**Factorial Function in Various Languages**

The mathematical definition of the factorial function on natural numbers is
simply `factorial(0) = 1` and `factorial(n) = n*factorial(n-1)`
when `n>0`. The following are programs to compute this function in
several different languages; it is interesting to compare these programs and
to reflect on the reasons why each languages does what it does in the way that
it does.

**C++**

int factorial(int number) {
int temp;
if(number <= 1) return 1;
temp = number * factorial(number - 1);
return temp;
}
**Java**

public class factorial {
public static void main(String[] args) {
BigInteger n = BigInteger.ONE;
for (int i=1; i<=20; i++) {
n = n.multiply(BigInteger.valueOf(i));
System.out.println(i + "! = " + n);
}
}
}
**Scheme**

(define factorial (lambda (n)
(if (= n 1) 1
(* n (factorial (- n 1))))))
**Scheme (iterative)**

(define iter-factorial (lambda (n) (iter-factorial-helper 1 1 n)))
(define iter-factorial-helper (lambda (product counter n)
(if (> counter n)
(product (iter-factorial-helper (* product counter) (+ counter 1) n))))
**ML**

fun factorial (0) = 1
| factorial (n) = n * factorial(n-1);
**Prolog**

factorial(0,1).
factorial(N,F) :-
N>0,
N1 is N-1,
factorial(N1,F1).

Back to the First class notes page

To the CSE 130 homepage

Maintained by Joseph Goguen

© 2004 Joseph Goguen, all rights reserved

Last modified: Sat Jan 10 12:53:17 PST 2004