博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
exec 1.7
阅读量:6478 次
发布时间:2019-06-23

本文共 693 字,大约阅读时间需要 2 分钟。

hot3.png

做个实验,依次求1的根,0.1的根,0.001 ... 很快就会发现结果稳定在0.3附近,当数足够小的时候,这个函数明显失灵了;

再试试大的数,10,100,1000 ... 当输入足够大,解释器陷入死循环;说明当数足够大的时候,这个函数也失灵了;

具体为什么,我还不能直观地理解。既然这个基本是个数学问题,我就暂时先不考虑了,有时间再研究。

但是后面的部分还是要做,判断两次迭代结果的差异来决定是否停止:

(define (square x)

  (* x x)
)
(define (good-enough last-guess this-guess)
  (< (abs(/ (- this-guess last-guess) last-guess)) 0.000001)
  )
(define (improve guess x)
  (/ (+ guess (/ x guess)) 2.0)
  )
// 引入一个新的参数,现在有两个猜测值了,分别表示上一次迭代的值和这一次迭代的值
(define (sqrt-iter last-guess this-guess x)
  (if (good-enough last-guess this-guess)
    this-guess
    (sqrt-iter this-guess (improve this-guess x) x)
  )
)
(define (my-sqrt x)
  (sqrt-iter 1.0 2.0 x))

测试了一个很小和很大的数,貌似还不错。

转载于:https://my.oschina.net/mayqlzu/blog/93939

你可能感兴趣的文章
自定义Section
查看>>
在.NET开发中的单元测试工具之(2)——xUnit.Net
查看>>
迁移yaf项目到laravel5.5,并全面使用passport提供API之自定义加密方式(二)
查看>>
Python学习小结--变量与简单的数据类型
查看>>
情人节之每天给你的女朋友发短信(nodejs版)
查看>>
记一次 Kafka 排错
查看>>
Nginx 配置文件 nginx.conf 详解
查看>>
Postgresql窗口函数(二)
查看>>
不小心用js重做了一遍贪吃蛇
查看>>
移除链表倒数第n个元素
查看>>
手动实现.*正则表达式匹配函数
查看>>
springboot - 收藏集 - 掘金
查看>>
JS 中的 This 别再被问倒了,面试常见问题分析
查看>>
Vue上手总结
查看>>
git使用错误记录及解决
查看>>
详解js中的继承(二)
查看>>
CSS 常用的定位和布局方法汇总(已添加源码地址)
查看>>
推荐系统在手机推送中的应用场景设想
查看>>
用来测试的小视频地址集
查看>>
DevOps读书清单:十本应该放入书架的经典
查看>>