SICP学习笔记 1.2.1 线性的递归和迭代

  练习1.9

    对于过程

    (define (+ a b)

      (if (= a 0)

        b

        (inc (+ (dec a) b))))

    计算(+ 4 5)时的替换过程为

    -->(+ 4 5) 

    -->(if (= 4 0) 5 (inc (+ (dec 4) 5)))

    -->(inc (+ 3 5))

    -->(inc (if (= 3 0) 5 (inc (+ (dec 3) 5))))

    -->(inc (inc (+ 2 5)))

    -->(inc (inc (if (= 2 0) 5 (inc (+ (dec 2) 5)))))

    -->(inc (inc (inc (+ 1 5))))

    -->(inc (inc (inc (if (= 1 0) 5 (inc (+ (dec 1) 5))))))

    -->(inc (inc (inc (inc (+ 0 5)))))

    -->(inc (inc (inc (inc (if (= 0 0) 5 (inc (+ (dec 0) 5)))))))

    -->(inc (inc (inc (inc 5))))

    -->(inc (inc (inc 6)))

    -->(inc (inc 7))

    -->(inc 8)

    -->9

    为线性递归;

    对于过程

    (define (+ a b)

      (if (= a 0)

          b

          (+ (dec a) (inc b))))

    计算(+ 4 5)时的替换过程为

    -->(+ 4 5)

    -->(if (= 4 0) 5 (+ (dec 4) (inc 5)))

    -->(+ 3 6)

    -->(if (= 3 0) 6 (+ (dec 3) (inc 6)))

    -->(+ 2 7)

    -->(if (= 2 0) 7 (+ (dec 2) (inc 7)))  

    -->(+ 1 8)

    -->(if (= 1 0) 8 (+ (dec 1) (inc 8))) 

    -->(+ 0 9)

    -->(if (= 0 0) 9 (+ (dec 0) (inc 9)))

    -->9         

    为线性迭代.

 

  练习1.10

 

    (A 1 10)-->(A 0 (A 1 9))

        -->(* 2 (A 1 9))

        -->(* 2 (A 0 (A 1 8)))

        -->(* 2 (* 2 (A 1 7)))

        -->......

        -->2^10

    (A 2 4) -->(A 1 (A 2 3))

        -->(A 1 (A 1 (A 2 2)))

        -->(A 1 (A 1 (A 1 (A 1 (A 2 1)))))

        -->(A 1 (A 1 (A 1 (A 1 2))))

        -->(A 1 (A 1 (A 1 2^2)))

        -->(A 1 (A 1 2^4))

        -->(A 1 2^8)

        -->2^16

    (A 3 3) -->(A 2 (A 3 2))

        -->(A 2 (A 2 (A 3 1)))

        -->(A 2 (A 2 2))

        -->(A 2 2^2)

        -->2^16

 

    (A 0 n) -->2n

    (A 1 n) -->2^n

    (A 2 n) -->2^(2^n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值