将 sum
改成迭代计算版本:
;;; 30-iter-sum.scm
(define (sum term a next b)
(define (iter a result)
(if (> a b)
result
(iter (next a)
(+ (term a) result))))
(iter a 0))
测试:
1 ]=> (load "30-iter-sum.scm")
;Loading "30-iter-sum.scm"... done
;Value: sum
1 ]=> (sum (lambda (x) x)
1
(lambda (i) (+ 1 i))
10)
;Value: 55