码迷,mamicode.com
首页 > 其他好文 > 详细

SICP题解----第1.1节练习

时间:2014-09-24 10:33:59      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   2014   sp   问题   on   c   

第1.1节的练习包括习题1.1到1.8

其中习题1.1--1.6在构造过程抽象的第一节已经给出。

下面给出练习1.7和练习1.8的题解。

练习1.7

首先观察课本上的程序的问题.

bubuko.com,布布扣

可以发现,对于特别小的数,比如 0.00009 ,书本给出的 sqrt 并不能计算出正确的答案; 而对于特别大的数,因为实现的小数精度不足以表示两个大数之间的差,所以 sqrt 会陷入死循环而无法得出结果。

要避免这一错误,我们按照练习所说,对 good-enough? 进行修改:不再检测猜测值 guess 的平方与 x 之间的差,而是检测新旧两次猜测值之间的比率,当比率变化非常小时,程序就停止 improve 。

新的 good-enough? 定义如下:

(define (good-enough? old-guess new-guess x) ; old-guess*newguess/x -1     
    (< (abs (- (/ (* old-guess new-guess)x) 1))

结果如下:

bubuko.com,布布扣

练习1.8

只需简单修改牛顿法求平方根即可。

bubuko.com,布布扣

SICP题解----第1.1节练习

标签:style   blog   http   ar   2014   sp   问题   on   c   

原文地址:http://blog.csdn.net/suool/article/details/39519611

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!