【问题标题】:MIT-Scheme: Different Behavior on Infinite Loop Depending on NumbersMIT-Scheme:无限循环上的不同行为取决于数字
【发布时间】:2012-09-10 03:41:53
【问题描述】:

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

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

有人知道不同行为的原因吗?

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

【问题讨论】:

标签: scheme sicp mit-scheme


【解决方案1】:

您的good-enough? 程序似乎有误,试试这个:

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

【讨论】:

  • 谢谢Óscar 我用你的版本测试了我的代码足够好了吗?过程,但行为是相同的。我的意思是,预期的行为是无限循环,这是练习的一部分。事实上足够好?程序永远不会被调用。我的建议是,当您使用有理数或强制使用十进制数进行十进制除法时,解释器会给出不同的响应。我在我的要点中写了一个注释来指出这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多