python - 请问这个利用二分法计算平方根哪里有错了呢?
高洛峰
高洛峰 2017-04-17 15:14:47
[Python讨论组]
def square_root_2():
    i = 0
    c= 10
    m_max = c
    m_min = 0
    g = (m_min + m_max)/2
    while (abs(g*g-c) > 0.001):    #精度设为为0.001
        if (g*g < c):
            m_min = g
        else:
            m_max = g
        g = (m_min+m_max)/2
        i = i + 1
        print ("%d:%.5f" % (i,g))    #小数点后取5位
square_root_2()

运行倒是可以的,但是一直是无限循环的情况,哪里不对呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
伊谢尔伦

问题出现在这个地方:g = (m_min + m_max) / 2,m_min、m_max都为整数其和也为整数,两个整数相除,结果为整数。修改为下面即可:

g = (m_min+m_max) / 2.0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号