zoukankan      html  css  js  c++  java
  • 【SICP练习】5 练习1.9

    

    以下是第一个加起两个正整数的方法,其中inc将参数加1dec将参数减1

    (define (+ a b)

             (if(= a 0)

                b

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

    用代换模型展示(+ 4 5)如下:

    (+ 4 5)

    (inc (+ 3 5))

    (inc (inc (+ 2 5)))

    (inc (inc (inc (+ 1 5))))

    (inc (inc (inc (inc (+ 0 5)))))

    (inc (inc (inc (inc 5))))

    (inc (inc (inc 6)))

    (inc (inc 7))

    (inc 8)

    9

    如上所示,在代换模型展示中包含了伸展和收缩两个阶段,并且伸展阶段所需的额外存储量和计算所需的步数都正比于参数a。因此这是一个线性递归过程。

    以下是另一个加起两个正整数的方法。

    (define (+ a b)

             (if(= a 0)

               b

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

    同样用代换模型展示(+ 4 5)如下:

    (+ 4 5)

    (+ 3 6)

    (+ 2 7)

    (+ 1 8)

    (+ 0 9)

    9

    在这个过程中并没有任何增长或者收缩,而其计算过程可用固定数目的状态变量(a)描述。这是一个线性迭代过程。

    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    android widgets控件
    android test控件
    android layout
    android build.gradle
    android studio AndroidManifest
    android studio settings
    (2)git本地生成SSH关联github
    (1)git
    bzoj2286 (sdoi2011)消耗战(虚树)
    Tree 树(树形期望dp)
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786225.html
Copyright © 2011-2022 走看看