乐正

Actions speak louder than words.

Sicp-ex1-30

问题

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

1
2
3
4
5
6
(define (sum term a next b)
  (define (iter a result)
    (if <??>
        <??>
        (iter <??> <??>)))
  (iter <??> <??>))

解答

练习1.30 (ex1-30.scm) download
1
2
3
4
5
6
(define (sum term a next b)
  (define (iter a result)
    (if (> a b)
        result
        (iter (next a) (+ result (term a)))))
  (iter a 0))

测试

1
2
3
4
5
6
;;; Load ex1-30.scm
(simpson-integral cube 0.0 1.0 1000)
;Value: .25000000000000006

(simpson-integral cube 0.0 1.0 100000)
;Value: .2500000000000001

draft

« sicp-ex1-29 sicp-ex1-31 »

Comments