方法一:二分查找
x = 24
epsilon = 0.01
numGuesses = 0
low = 0.0
high = max(1.0,x)
ans = (high + low)/2.0
while abs(ans*ans - 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
low: 0.0 high: 24 ans = 12.0 low: 0.0 high: 12.0 ans = 6.0 low: 0.0 high: 6.0 ans = 3.0 low: 3.0 high: 6.0 ans = 4.5 low: 4.5 high: 6.0 ans = 5.25 low: 4.5 high: 5.25 ans = 4.875 low: 4.875 high: 5.25 ans = 5.0625 low: 4.875 high: 5.0625 ans = 4.96875 low: 4.875 high: 4.96875 ans = 4.921875 numGuesses = 9 4.8984375 is close to square root of 24
epsilon = 0.01
k = 24.0
guess = k/2.0
numGuesses = 0
while abs(guess*guess - k)>=epsilon:
guess = guess - ((guess**2 -k)/(2*guess))
numGuesses += 1
print 'numGuess =', numGuesses
print 'Square root of', k, 'is about', guessnumGuess = 4 Square root of 24.0 is about 4.89898874321
原文地址:http://blog.csdn.net/lionpku/article/details/46504149