Code Review
Compare your solutions
(define (product term a next b)
(define (iter a result)
(if (> a b)
result
(iter (next a) (* (term a) result))))
(iter a 1))
; (define (product term a next b)
; (if (> a b)
; 1
; (* (term a)
; (product term (next a) next b))))
(define (factorial x) (product identity 1 inc x))
; π 2·4·4·6·6·8···
; - = --------------
; 4 3·3·5·5·7·7···
;
; Представим эту функцию в виде произведений:
;
; π 2 4 4 6 6 8 ···
; - = -·-·-·-·-·-·---
; 4 3 3 5 5 7 7 ···
;
; Попробуем понять логику изменений для каждой итерации:
;
; π 2 2+2 4+0 4+2 6+0 8 ···
; - = -·---·---·---·---·-·---
; 4 3 3+0 3+2 5+0 5+2 7 ···
;
; Значит мы начинаем с 2/3 и каждый чётный шаг добавляем к числителю
; 2 и к знаменателю 0. Каждый нечётный шаг делаем наоборот.