Scheme或Common Lisp中的牛顿平方根方法

阿玛

我无法找出该程序中的错误。这是计划版本。我也尝试了Common Lisp版本。在这两种情况下,程序都将继续运行而没有任何结果。请帮忙。

(define (sqrt1 x)

  (define (square x)
      (* x x))

  (define (isGoodEnough g x)
      (< (abs (- (square g) (square x))) 0.01))

  (define (average x y)
      (/ (+ x y) 2))

  (define (improvedGuess g x)
      (average g (/ x g)))

  (define (sqrt-iter g x)
      (if (isGoodEnough g x)
          g
          (sqrt-iter (improvedGuess g x) x)))

  (sqrt-iter 1.0 x))
巴尔玛

isGoodEnough有一个错误。您将同时对当前猜测g和数字求平方x但是由于g应该是的平方根x,所以如果将它们平方在一起,它们将永远不会接近。您应该只猜测一下。

(define (isGoodEnough g x)
  (< (abs (- (square g) x)) 0.01))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档