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柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    vue中mixins(混入)的使用
    js实现淘宝轮播图放大镜效果
    vue中的provide和inject
    vue自定义过滤器
    vue自定义指令
    HTTP和HTTPS详解
    可靠的TCP连接为何是三次握手和四次挥手
    跟着动画来学习TCP三次握手和四次挥手
    简单了解TCP/IP与HTTP
    网络协议
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786225.html
Copyright © 2011-2022 走看看