0

为什么我们使用 max 函数。我们不能立即对 x 评价高吗?这也将达到我们的目的。那么,这个 max() 函数如何改进算法呢?

x=25
epsilon=0.01
numGuesses= 0
low =0.0
high = max(1.0,x)
ans = (high+low)/ 2.0
while abs(ans**2 -x)>= epsilon:
    print 'low =', low, 'high =', high, 'ans =', ans
    numGuesses+= 1
    if ans**2 <= x:
        low= ans
    else:
        high= ans
    ans = (high+low)/2.0
print 'numGuesses =', numGuesses
print ans, 'is close to square root of', x
4

1 回答 1

3

代码的重点是逼近任何值的平方根x,而不仅仅是 25。我们通过设置 alowhigh我们知道的值分别低于和高于平方根来做到这一点,然后进行数学运算以得到它们更接近正确的值。

x介于 0 和 1 之间时, 的平方根x大于x自身。因此我们不能只设置highx,因为它需要从高于期望的答案开始。但在这些情况下,我们也知道 的平方根x小于 1,因此 1 将作为初始high值。(同理,x大于 1 时, 的平方根x也会大于 1,但会小于x。)

于 2014-09-06T07:24:16.023 回答