练习 1.30

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

讨论

blog comments powered by Disqus