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