/* factorial -- precondition: n >= 0 -- postcondition: returns n! */ int factorial(int n) { int k, product; if ( n < 0 ) return 0; product = 1; for ( k = 2; k <= n; k++ ) /* loop invariant: product = (k-1)! */ product = k*product; return product; }