(define factorial (lambda (n) (factorial-product 1 n))) (define factorial-product (lambda (a b) ; compute a × b! (if (= b 0) ; as (a × b) × (b-1)! a (factorial-product (* a b) (- b 1)))))factorial correctly computes the factorial of n if factorial-product correctly computes a × b!
This quantity is also an invariant. Example:
1 × 5! = 120
(1 × 5) × 4! = 120
(5 × 4) × 3! = 120
(20 × 3) × 2! = 120
(60 × 2) × 1! = 120
(120 × 1) × 0! = 120