1

当我根据我使用的数字运行代码时看到两种不同的行为时,我正在研究 SICP 书中练习 1.6 的解决方案。

如果我在调用 sqrt-iter 过程时使用自然数,解释器永远不会停止,但是当我使用浮点数强制十进制除法时,解释器会响应:Aborting!:超出最大递归深度。

有谁知道不同行为的原因?

我的回答提出了一个要点,以帮助任何想要运行代码的人,只需复制和粘贴:http ://bit.ly/Qv1wru 。mit-scheme 版本是 9.1.1。

4

1 回答 1

1

您的good-enough?程序似乎错误,请尝试以下程序:

(define (good-enough? guess x)
  (< (abs (- (sqr guess) x)) 0.001))
于 2012-09-10T05:01:20.000 回答