ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          例子:求2的平方根

          Guess Quotient Average
          ??
          1 (2/1) = 2 ((2 + 1)/2) = 1.5
          ??
          1.5 (2/1.5) = 1.3333 ((1.3333 + 1.5)/2) = 1.4167
          ??
          1.4167 (2/1.4167) = 1.4118 ((1.4167 + 1.4118)/2) = 1.4142
          ??
          1.4142 ... ...

          一.給出一個scheme的過程
          (define?(sqrt-iter?guess?x)
          ??(if?(good-enough??guess?x)
          ??????guess
          ??????(sqrt-iter?(improve?guess?x)
          ?????????????????x)))
          二.改進猜的數(x除以猜的數和猜的數的平均值
          ???
          (define?(average?x?y)
          ? ??? (/?(+?x?y)?2))

          ??? (define?(improve?guess?x)
          ? ??? (average?guess?(/?x?guess)))
          三.如何得到比較適合的值.這里做了一個假設,猜的值的平方減去x不小于0.001
          ???
          (define?(good-enough??guess?x)
          ? ??? (<?(abs?(-?(square?guess)?x))?0.001))

          注:如何用內部過程來使用上面的部分:
          (define (sqrt x)
          ? (define (good-enough? guess)
          ??? (define (square)
          ????? (* guess guess))
          ??? (< (abs (- (square) x)) 0.001))
          ? (define (improve guess)
          ??? (define (average y)
          ????? (/ (+ guess y)
          ??? ?2))
          ??? (average (/ x guess)))
          ? (define (sqrt-iter guess)
          ??? (if (good-enough? guess)
          ??? guess
          ??? (sqrt-iter (improve guess))))
          ? (sqrt-iter 1.0))

          posted on 2006-07-29 22:12 ivaneeo 閱讀(590) 評論(0)  編輯  收藏 所屬分類: scheme-語言之母
          主站蜘蛛池模板: 常山县| 常熟市| 高雄县| 禄丰县| 秀山| 隆昌县| 锡林郭勒盟| 陆丰市| 潞城市| 永新县| 谢通门县| 漠河县| 丰镇市| 垦利县| 甘德县| 呼伦贝尔市| 绥棱县| 宜春市| 博爱县| 永春县| 宽甸| 玛沁县| 麻栗坡县| 黑水县| 那坡县| 普定县| 庆安县| 罗山县| 马关县| 阿拉善右旗| 金川县| 平邑县| 留坝县| 永春县| 略阳县| 新昌县| 淄博市| 子洲县| 咸丰县| 岚皋县| 齐齐哈尔市|