方法一:二分查找
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', guess
numGuess = 4 Square root of 24.0 is about 4.89898874321
原文地址:http://blog.csdn.net/lionpku/article/details/46504149