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

break终止牛顿法求平方根循环致结果异常,求正确终止方式

牛顿法求平方根:循环终止问题解析

问题根源:break的误用

你添加break后只输出3.25,根本原因是break直接终止了循环,程序只完成了一次迭代(把初始guess 4.5更新为3.25)就停止了,完全没继续迭代到收敛值3。break并没有改变guess的值,只是提前打断了迭代流程。

另外你的原代码while条件存在逻辑错误:guess != (abs(guess * guess - x <= 10 ** -12))里,abs(...) <= ...返回的是布尔值(True/False),Python会自动把True转成1、False转成0,拿浮点数guess和整数1/0比较完全不符合逻辑,只是碰巧在迭代到3时,程序误打误撞停止了。

正确的循环终止方式

方式1:用精度条件控制循环(推荐)

直接把“精度未达标”作为while循环的条件,让循环自动终止:

x = int(input("Enter x: "))
guess = x / 2
# 当猜测值的平方与x的差大于精度要求时,继续迭代
while abs(guess ** 2 - x) > 10 ** -12:
    guess = (guess + x / guess) / 2
    print(guess)
print("最终平方根:", guess)

方式2:循环内判断后break

如果一定要用break,必须先检查精度是否达标,达标再跳出循环,而不是每次迭代都强制break:

x = int(input("Enter x: "))
guess = x / 2
while True:  # 开启无限循环
    guess = (guess + x / guess) / 2
    print(guess)
    # 精度达标时终止循环
    if abs(guess ** 2 - x) <= 10 ** -12:
        break
print("最终平方根:", guess)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:20:20