1.1.7 牛顿法求平方根
(define (average x y)
(/ (+ x y) 2))
(define (improve guess x)
(average guess (/ x guess)))
(define (good-enough? guess x)
(< (abs (- (* guess guess) x) )0.0000000000001) )
(define (sqrt-iter guess x)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)
))
(define (sqrt-g x)
(sqrt-iter 1.0 x))
Welcome to DrRacket, version 5.1.1 [3m].
Language: R5RS; memory limit: 128 MB.
> (sqrt-g 2)
1.414213562373095
> (sqrt 2)
1.4142135623730951
> (sqrt-g 3)
1.7320508075688772
> (sqrt 3)
1.7320508075688772
>
;练习 1.6 .newif
(define (newif predicate thenClause elseClause)
(cond (predicate thenClause)
(else elseClause)))
(define (newSqrt-iter guess x)
(newif (good-enough? guess x)
guess
(newsqrt-iter (improve guess x)
x)))
(define (newSqrt-g x)
(newSqrt-iter 1.0 x))
Welcome to DrRacket, version 5.1.1 [3m].
Language: R5RS; memory limit: 128 MB.
> (newSqrt-g 2)
Interactions disabled //因为超出内存使用量而终止,死循环,原因:函数使用 应用序 ,先求参数值后应用规则。
;练习1.7
(define (good-enough? guess x)
(< (abs (- (improve guess x) guess) )0.00000000000000001) )
> (sqrt 2000000000000000000000000000000000000000000000000)
1.414213562373095e+024
> (sqrt 0.0000000000000000000000000000000000000000000000002)
4.472135954999579e-025
>
;练习1.8
(define (CubeImprove y x)
(/ (+ ( / x (* y y)) (* 2 y)) 3))
(define (CubeGood? guess x)
(< (abs (- (CubeImprove guess x) guess)) 0.0000000001))
(define (Cube-iter guess x)
(if (CubeGood? guess x)
guess
(Cube-iter (CubeImprove guess x) x)))
(define (CubeGood? guess x)
(< (abs (- (CubeImprove guess x) guess)) 0.0000000001))
(define (Cube x)
(Cube-iter 1.0 x))
Welcome to DrRacket, version 5.1.1 [3m].
Language: R5RS; memory limit: 128 MB.
> (Cube 8)
2.000000000012062
> (Cube 27)
3.0000000000000977
> (Cube -64)
-4.000000000004644
> (Cube -125)
-5.000000000076353
>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架