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-語言之母
          主站蜘蛛池模板: 双城市| 合川市| 大理市| 临泉县| 紫金县| 枣强县| 千阳县| 永吉县| 确山县| 安康市| 任丘市| 舞阳县| 陆良县| 玉门市| 堆龙德庆县| 富顺县| 菏泽市| 马鞍山市| 黑龙江省| 苏尼特右旗| 齐河县| 余干县| 新昌县| 太康县| 青浦区| 会东县| 海安县| 黎平县| 包头市| 昆明市| 左云县| 舞钢市| 塔城市| 仪征市| 璧山县| 潼南县| 年辖:市辖区| 衡阳县| 宁乡县| 东明县| 新营市|