1.30

练习 1.30 上面的过程 sum 将产生出一个线性递归。我们可以重写该过程,使之能够迭代地执行。请说明应该怎样通过填充下面定义中缺少的表达式,完成这一工作。

 
(define (sum term a next b)
  (define (iter a result)
    (if <??>
        <??>
        (iter <??> <??>)))
  (iter <??> <??>))
x
 
#<undef>

测试一下:

 
(define (sum term a next b)
    (define (iter a result)
        (if (> a b)
            result
            (iter (next a) (+ result (term a)))))
        (iter a 0))
 
(define (cube x) (* x x x))
(define (inc n) (+ n 1))
(define (sum-cubes a b)
    (sum cube a inc b))
 
(sum-cubes 1 10)
3025

results matching ""

    No results matching ""