1.31 Exercise 1.31
We can define a product procedure very similarly to the first sum procedure:
| (define (product term a next b) | | (if (> a b) | | 1 | | (* (term a) | | (product term (next a) next b)))) |
|
We can use this procedure to define factorial as follows:
| (define (factorial n) | | (product identity 1 inc n)) |
|
We can use this procedure to compute pi as follows:
| (define (pi-product n) | | (define (numer n) | | (define (numer-term i) | | (if (divides? 2 i) | | (+ i 2) | | (+ i 1))) | | (product numer-term 1 inc n)) | | (define (denom n) | | (define (denom-term i) | | (if (divides? 2 i) | | (+ i 1) | | (+ i 2))) | | (product denom-term 1 inc n)) | | (* 4 (/ (numer n) (denom n)))) |
|
A product procedure computing an iterative process is as follows:
| (define (product term a next b) | | (define (iter a result) | | (if (> a b) | | result | | (iter (next a) | | (* result (term a))))) | | (iter a 1)) |
|