`
SavageGarden
  • 浏览: 222003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SICP学习笔记 1.1.7 实例:使用牛顿法求平方根

    博客分类:
  • SICP
 
阅读更多

 

   练习1.6

    应用序会对

 

(define (sqrt-iter guess x)
  (new-if (good-enough guess x)
	  guess
	  (sqrt-iter (improve guess x) x)))

 

    的new-if中的else-clause(即(sqrt-iter (improve guess x) x))进行展开,而sqrt-iter使用了递归,因此将进入死循环

 

    练习1.7

    在被求值的数很小或很大时,因为变化程度很小会导致程序进入死循环

    修改后的程序如下:

 

Java代码  收藏代码
  1. (define (square x)  
  2.   (* x x))  
  3. (define (myabs x)  
  4.   (if (< x 0) (- x) x))  
  5. (define (good-enough oguess nguess)  
  6.   (< (/ (myabs (- (square oguess) (square nguess))) (square oguess)) 0.001))  
  7. (define (average x y)  
  8.   (/ (+ x y) 2))  
  9. (define (improve guess x)  
  10.   (average guess (/ x guess)))  
  11. (define (sqrt-iter oguess nguess x)  
  12.   (if (good-enough oguess nguess)  
  13.       nguess  
  14.       (sqrt-iter nguess (improve nguess x) x)))  
  15. (define (sqrt x)  
  16.   (sqrt-iter x 1.0 x))  

 

  练习1.8

 

Scheme代码  收藏代码
  1. (define (square x) (* x x))  
  2. (define (cube x) (* x x x))  
  3. (define (myabs x)  
  4.   (if (< x 0) (- x) x))  
  5. (define (good-enough oguess nguess)  
  6.   (< (/ (myabs (- (cube oguess) (cube nguess))) (cube oguess)) 0.001))  
  7. (define (improve guess x)  
  8.   (/ (+ (/ x (square guess)) (* 2 guess)) 3))  
  9. (define (cube-root-iter oguess nguess x)  
  10.   (if (good-enough oguess nguess)  
  11.       nguess  
  12.       (cube-root-iter nguess (cube-improve nguess x) x)))  
  13. (define (cube-root x)  
 
分享到:
评论

相关推荐

    sicp-Structure and Interpretation of Computer Programs

    - **1.1.7 示例:使用牛顿法求平方根**(Example: Square Roots by Newton's Method):通过一个具体的数学问题展示如何设计算法。 - **1.1.8 过程作为黑盒抽象**(Procedures as Black-Box Abstractions):强调...

    Structure and Interpretation of Computer programs sicp

    - **1.1.7 示例:使用牛顿法求平方根**: 通过一个实际的例子展示如何实现数学算法。 - **1.1.8 过程作为黑盒抽象**: 强调过程的封装性和模块化设计的重要性。 - **1.2 由过程生成的过程及其产生的过程** - **...

    SICP(计算机体系结构)

    - **1.1.7 示例:牛顿法求平方根**: 通过实例讲解迭代方法。 - **1.1.8 将过程作为黑盒抽象**: 强调过程的封装性和独立性。 - **1.2 由过程生成的过程** - **1.2.1 线性递归与迭代**: 比较两种不同类型的递归...

    sicp-memo-ans:SICP笔记和答案

    sicp备忘录 包含 SICP 每个部分的注释和答案。 请参考那些正在学习SICP的人。 笔记 如果你想在 gauch 中使用随机函数 ...顺便说一下,在学习 SICP 时,我使用了一个名为Petite Chez Scheme的处理系统。

    sicp-py-zh:[译] UCB CS61a SICP Python 描述 中文版

    UCB CS61a SICP Python 描述 原文: 译者: 协议: 前面是山,我们就爬山;前面是海,我们就渡海;前面是皇宫,我们就开炮!——《龙族前传》 ‍ 下载 Docker docker pull apachecn0/sicp-py-zh docker run -tid -p ...

    sicp和操作系统:精髓与设计原理第七版

    资源名称:sicp 和 操作系统:精髓与设计原理第七版资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    sicp-js-zh:【译】NUS CS1101s SICP JavaScript 描述

    NUS CS1101s SICP JavaScript 描述原文:协议:如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。——David Leinweber贡献指南本项目需要校对,欢迎大家提交 Pull Request。...

    sicp-compiler-notes:有关SICP编译器的一些说明和演示

    在SICP上进行试用-&gt; WASM编译演示:SICP如何将机器代码注册为WASM 为阶乘翻译LISP代码(define (factorial n) (define (iter product counter) (if (&gt; counter n) product (iter (* counter product) (+ counter 1)))...

    sicp-py-zh:【译】UCB CS61a SICP Python

    《SICP Python》是基于加州大学伯克利分校(UCB)计算机科学61A课程(CS61A)的“Structure and Interpretation of Computer Programs”(SICP)的经典教材的Python语言版本。SICP是一本极具影响力的计算机科学教科...

    sicp_but_clojure:Clojure中的SICP示例和练习

    《Clojure中的SICP实践:sicp_but_clojure》 SICP(Structure and ...同时,Jupyter Notebook的使用使学习过程更具探索性和互动性,让理论与实践相结合,帮助你更好地掌握Clojure和函数式编程的核心理念。

    sicp-study-group

    1-1-7 ::例子:牛顿法求平方根 1-1-8 ::过程作为黑盒抽象 1-2-1 ::线性递归和迭代 1-2-2 ::树递归 1-2-3 ::增长顺序 1-2-4 ::求幂 1-2-5 ::最大公约数 1-2-6 ::示例:测试素数 1-3-1 ::过程作为参数 1-3-2...

    sicp-eg-ex:sicp课程视频示例,自己的笔记,习题题解

    本文将围绕"Sicp-eg-ex"这个项目,结合标题和描述,探讨在学习SICP过程中遇到的例子、笔记和习题解,特别是环境检查方案9.5的相关知识点。 首先,我们关注到的是"SICP课程视频示例"。SICP课程的核心在于通过实际的...

    sicp-to-z80:一台SICP寄存器机到TI-84 Z80编译器

    最终目标是完全支持SICP指令集,然后使用此编译器将Scheme编译为Z80,或直接将Scheme编写为Z80。 无论哪种方式,该项目对我来说也意味着可以在TI-84(不是最好的语言)上探索Z80装配中的编程。特征显示字符串和数字...

    sicp-study-group:一个研究计算机程序结构和解释(SICP)的研究小组

    1. **阅读材料**:可能是SICP书的章节摘要、笔记或者补充阅读材料,帮助学习者更好地理解和消化书中的概念。 2. **代码实现**:小组成员可能用JavaScript实现了SICP中的各种算法和解释器,这有助于实践和理解书中...

    sicp 2016 from

    - **牛顿法求平方根的例子 (Example: Square Roots by Newton’s Method)**:通过具体的例子展示了如何利用迭代方法求解数学问题。 - **过程作为黑盒抽象 (Procedures as Black-Box Abstractions)**:强调了将过程...

    Structure Interpration of Computer Programs(英文版)

    - **1.1.7 示例:牛顿法求平方根**:通过一个具体的数学问题来展示如何使用程序解决实际问题。 - **1.1.8 将过程视为黑盒抽象**:讨论将过程视为独立实体的重要性,以及这种抽象对程序设计的意义。 - **1.2 过程...

    sicp 和 操作系统:精髓与设计原理第七版打包

    《SICP》(Structure and Interpretation of Computer Programs)是一本经典的计算机科学教材,由Harold Abelson和Gerald Jay Sussman合著,MIT出版社出版。这本书主要探讨了程序设计语言的基础,以及如何构建和理解...

    sicp_notes:SICP笔记和练习

    《SICP笔记和练习》是一份详尽的资源,主要涵盖了由MIT教授们编写的经典计算机科学教材《Structure and Interpretation of Computer Programs》(简称SICP)的学习笔记和练习解答。这份资料以HTML格式呈现,便于在线...

Global site tag (gtag.js) - Google Analytics