You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SICP练习1.8:实现立方根牛顿法的函数为何无法终止?

立方根牛顿法函数停滞的问题解决

你的代码陷入无限循环的核心问题出在good-enough?函数的终止判断条件上——你沿用了平方根的判断逻辑,用guess的平方和目标值x比较,但立方根的迭代终止应该判断guess的立方与x的差距是否足够小。

原代码中:

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

这个条件对立方根计算完全不适用,比如计算8的立方根时,当guess趋近于2,guess²是4,和8的差值始终是4,远大于0.001,导致迭代永远无法满足终止条件,陷入死循环。

修改good-enough?函数为立方比较即可解决问题:

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

其他部分的代码(迭代逻辑和improve函数)是正确的,修改后就能正常终止并输出正确的立方根结果。

内容的提问来源于stack exchange,提问作者Avrohom Yisroel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:15:58