Exercise 1.31
Imports: [[Chapter 1.3]] identity inc
- Recursive:
- Iterative:
(define (product term a next b)
(define (iter a acc)
(if (> a b)
acc
(iter (next a) (* acc (term a)))))
(iter a 1))
```
Calculating factorials and approximating $\pi$ using `product`:
```scheme
(define (factorial n)
(product identity 1 inc n))
(factorial 5) => 120
(factorial 7) => 5040
(define (approx-pi n)
(define (term k)
(let ((r (remainder k 2)))
(/ (+ k 2 (- r))
(+ k 1 r))))
(* 4 (product term 1.0 inc n)))
(approx-pi 00010) ~> 3.2751010413348065
(approx-pi 00100) ~> 3.1570301764551654
(approx-pi 01000) ~> 3.1431607055322552
(approx-pi 10000) ~> 3.1417497057380084