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

自学Python编程:为何二分查找循环中需重复ans=(high+low)/2公式?

为什么二分查找求平方根的循环里要重复计算ans = (high+low)/2.0?

这得从二分查找的核心逻辑说起:我们是通过不断缩小「可能包含平方根的区间」来逼近真实结果的,每一轮调整区间后,必须重新计算区间的中间值作为新的猜测值,否则整个查找过程根本推进不了。

拿你的代码一步步拆解:

  1. 初始时,我们设定查找区间是[low=0.0, high=20.0],第一次的猜测值ans是这个区间的中间值10.0。
  2. 进入循环后,发现10²=100远大于20,所以把区间的上限high调整为10.0——这时候新的查找区间变成了[0.0, 10.0]。
  3. 如果这时候不重新计算ans,那ans还是原来的10.0,下一轮循环判断abs(100-20)依然远大于epsilon,而且high已经是10.0了,后续调整也不会改变ans,直接陷入死循环。

所以在循环里重新计算ans = (high+low)/2.0的作用是:

  • 基于调整后的新区间,生成下一轮的猜测值
  • 让这个猜测值不断逼近真实的平方根,直到满足误差要求abs(ans² - x) < epsilon

简单说,二分查找就是每砍一半区间,就拿新的中间值再试,不更新这个中间值,查找就原地踏步,永远找不到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:50:25