Given the following recursive definition of sum:
(define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b))))
And the task:
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 <??> <??>))
I wrote the following code. What do you think?
(define (i-sum term a next b) (define (iter a result) (if (> a b) result (iter (next a) (+ result (term a))))) (iter a 0)) (define (identity x) x) (define (inc x) (+ 1 x)) (define (sum-integers a b) (i-sum identity a inc b))