首页 > 请问这个利用二分法计算平方根哪里有错了呢?

请问这个利用二分法计算平方根哪里有错了呢?

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()

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


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

g = (m_min+m_max) / 2.0
【热门文章】
【热门文章】