zoukankan      html  css  js  c++  java
  • SICP 习题 (1.8) 解题总结

    SICP 习题1.8需要我们做的是按照牛顿法求平方根的方法做一个求立方根的过程。

    所以说书中讲牛顿法求平方根的内容还是要好好理解,不然后面这几道题做起来就比较困难。

    反过来,如果理解了牛顿法求平方根的方法,做出一个求立方根的过程就很容易了。当然,我们需要一个改进猜测的方法,就是improve那部分,如果要我自己想出来这个改进方法我觉得是有挑战性的,还好书中直接写出来了,就是:((x / (y * y) )  +  ( 2 * y) )  /  3),其中y是猜测值,x是需要求立方根的数。

    根据以上公式,我们定义一个next-try过程,相当于求平方根过程里的improve过程。

    (define (next-try try-value x)
      (/ (+ (/ x (* try-value try-value)) (* 2 try-value)) 3))
    


    接着是定义try-cube-root 过程,整个过程几乎和书中的sqrt-iter过程相同,就是看猜测结果是否足够好,如果不够好就通过new-try过程计算一个更好的猜测结果出来继续。

    也正因为求平方根和求立方根的过程有这么多相似的代码,所以我们可以对这个过程进行抽象,形成一个应用范伟更广泛的过程。有关这一点书中很快就会开始讨论。

    回到我们的题目,定义的try-cube-root过程如下:

    (define (try-cube-root try-value x)
      (if (good-cube-root try-value x)
          try-value
          (try-cube-root (next-try try-value x) x)))
    


    好,题目做完了,整体上还是比较简单,如果感觉这题比较难的,一般是因为没有理解牛顿法求平方根的部分,需要回到书中的正文去理解。

  • 相关阅读:
    Flutter-常用插件庫
    Flutter-發送短信驗證碼
    Flutter-Radio單選框
    Flater-Provide狀態管理
    android sdk安装
    Android Studio的安装
    Flutter SDK安装(windows)
    Flutter-dialog彈出框
    python中的迭代器与生成器
    python闭包与装饰器
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3297052.html
Copyright © 2011-2022 走看看