MIT方案:根据数字在无限循环上的不同行为

时间:2012-09-10 03:41:54

标签: scheme sicp mit-scheme

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

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

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

我总结了我的答案,以帮助任何想要运行代码的人,只需复制&粘贴:http://bit.ly/Qv1wru。 mit-scheme版本是9.1.1。

1 个答案:

答案 0 :(得分:1)

您的good-enough?程序似乎有误,请尝试使用此程序:

(define (good-enough? guess x)
  (< (abs (- (sqr guess) x)) 0.001))