文档章节

【SICP练习】2 练习1.6

NoMasp
 NoMasp
发布于 2015/09/08 21:46
字数 397
阅读 3
收藏 0


练习1.6

这道题通过由一个新版本的if来引出,主要讨论的还是应用序和正则序的问题。我看到“将if提供为一种特殊形式”时还满头雾水,并不太清楚什么特殊形式。当再返回看if的语法时才发现,这在第12if的一般表达式下面一段。如果<predicate>得到真值,解释器就去求值<consequent>并返回其值。注意,在此处已经返回其值了,并没有进行后续运算。

而通过cond写出来的常规过程的if,在解释器采用应用序求值的情况下,如果第一次运算good-enough?时为真,则直接返回了guess

原文中的求平方根的程序:

(define (new-if predicate then-clauseelse-clause)

        (cond(predicate then-clause)

                 (elseelse-clause)))

 

(define (sqrt-iter guess x)

        (new-if(good-enough? guess x)

                   guess

                   (sqrt-iter (improve guess x)

                               x)))

 

 (define(sqrt-iter guess x)

        (if(good-enough? guess x)

                   guess

                   (sqrt-iter (improve guess x)

                               x)))

于是博主进行了如下测试:

(sqrt-iter 3.00009155413 9)

;Aborting!: maximum recursion depthexceeded

由此看来,解释器直接得出了超过最大递归深度的中止结果。

对此并不理解,后来才发现3.00009155413的平方减去9其结果为0.000549333162并不小于0.0001

于是又将3.000001的平方当作guess传入sqrt-iter,结果再次出乎意料,依旧是超过最大递归深度。

希望弄清楚这个问题的网友们能够予以回复咯。

版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp

本文转载自:http://blog.csdn.net/nomasp/article/details/43525419

NoMasp
粉丝 7
博文 334
码字总数 0
作品 0
镇江
程序员
私信 提问
金蝶K/3 BOS产品培训教案

K/3 BOS产品培训教案 1 K/3 BOS IDE练习案例... 2 1.1新建基础资料... 2 1.1.1新增基础资料交货地点... 2 1.2新建业务单据... 2 1.2.1新建寄存入库单,寄存入库单字段信息描述... 2 1.2.2练习...

mengyinxue
2018/07/06
0
0
postgreSQL和PHP的配置

我想学php开发,在mysql, mariaDB之间纠结了好久,最后选了postgresql, 现在想既然钻牛角尖了那就钻到底,于是在virtualbox虚拟机里安装debian 7.5, 加装nginx 1.6, postgresql 9.1, php 5....

风中的鬼精灵
2014/07/10
3.2K
9
在windows上实现java6和Java8共存解决办法

问题背景 公司项目中应用到的jdk环境为1.6,最近在家学习IntelliJ IDEA中sdk多环境配置时,想安装Jdk1.8,作为学习基础。那么问题来了,公司项目扩展不支持jdk1.8,为了既能满足公司项目开发环...

ruanjun
2018/01/14
38
0
第2章 循环流程控制语句

1.1 for循环的格式及基本使用1.1.1 for循环语句格式: for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; / /让循环体代码执行多次; } 1.1.2 执行流程 A:执行初始化语句 B:执行判断条...

我是小谷粒
2018/03/06
0
0
Julia 小白 Day 13 :聚类的实现

前情提要: 概述 本地环境:Windows、Mac 在线环境:无痛环境、定制无痛环境 快速学习:DataFrames 资源 案例 上期说到免费数据资源,这期讲讲用免费数据来做机器学习的经典案例Iris的Julia...

_KevinZhang_
2018/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
22分钟前
4
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
7
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部