Skip to content

1.30

; The sum procedure above generates a linear recursion. 
; The procedure can be rewritten so that the sum is 
; performed iteratively. Show how to do this by filling 
; in the missing expressions in the following definition:
;
; (define (sum term a next b) 
;   (define (iter a result)
;       (if ⟨??⟩ 
;           ⟨??⟩
;           (iter ⟨??⟩ ⟨??⟩))) 
;   (iter ⟨??⟩ ⟨??⟩))    
(define (sum term a next b)
    (define (iter a result)
        (if (> a b)
            result
            (iter (next a) (+ result (term a)))))
    (iter a 0))

(define (pi-sum a b) 
    (define (pi-term x)
        (/ 1.0 (* x (+ x 2)))) 
    (define (pi-next x)
        (+ x 4))
    (sum pi-term a pi-next b))

(* 8 (pi-sum 1 1000)) ;Value: 3.139592655589782