SICP 1.11

线性递归:书中P21的代换模型看到伸展和收缩两个阶段,且伸展阶段所需的额外存储量和计算所需的步数都正比于参数

线性迭代:P22只使用常量存储大小,且计算所需的步骤正比于参数

树形递归:单纯按照数学上的解法,对最终结果进行逆推,其前面的每个部分需要更前面的部分进行分解。为了减少计算所需的空间,采用自底至上的迭代方法。从树变成一条直线。
此解法一般需要一个变量存储计算次数;另外几个变量存储中间变量,每经过一次迭代交换它们的值。

参考答案,根据题中所给的公式,f(n)由n-1至n-3的函数结果决定,所以我们用变量 i 作为渐进下标(i=0开始), n 作为最大下标。 a 、 b 和 c 分别代表函数调用f(i+2) ,f(i+1) 和 f(i)的值。

(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)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值