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

  • 相关阅读:
    Mysql基本操作
    MySql架构
    并发中关键字的语义
    SpringMVC<一> 基本结构与配置
    Tomcat 顶层结构
    Linux 日常常用指令
    JSON 数据格式
    RMAN 增量备份级别说明
    Oracle常用数据库系统表单以及SQL的整理
    使用puTTY或Xshell连接阿里云TimeOut超时
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786225.html
Copyright © 2011-2022 走看看