SICP练习题1.11

来源:互联网 发布:软件开发助理工程师 编辑:程序博客网 时间:2024/05/18 13:25

网上解题集(http://sicp.readthedocs.io/en/latest/chp1/11.html)给出的迭代版本是

(define (f n)    (f-iter 2 1 0 0 n))(define (f-iter a b c i n)    (if (= i n)        c        (f-iter (+ a (* 2 b) (* 3 c))   ; new a                a                       ; new b                b                       ; new c                (+ i 1)                n)))

有两个问题:

1,i跟n两个参数可以省略一个

2,不支持负数

我给出的迭代版本是

(define (f n)    f_iter(2, 1, 0, n))(define (f_iter a, b, c, count)     (if (< count 3)         (- (+ count a) 2)                    (f_iter (+ a (* 2 b) (* 3 c))                    a                    b                    (- count 1))))

经测试可用

0 0
原创粉丝点击