尝试使用循环函数来查找数字的平方根。我正在尝试使用巴比伦方法,但它不会返回正确的答案。如果有人可以指出我有错误的地方,将非常感激。
def sqrt(number, guess, threshold):
x = number / 2
prev_x = x + 2 * threshold
while abs(prev_x - x) > threshold:
prev_x = x
x = (x + guess / x) / 2
square_root = x
return square_root
test = sqrt(81, 7, 0.01)
print (test)
因为这将进展到猜测的平方根。将其更改为
x = (x+number/x)/2
根本不需要guess
变量。你的x = number/2
已经是你最初的猜测,并且在你的计算中使用任意分配的guess
而不更新它你肯定不会得到正确的数字。
将guess
替换为number
,而return
仅在while
循环结束时替换,并且您的代码可以正常工作:
def sqrt(number,guess,threshold):
x = number/2
prev_x = x+2*threshold
while abs(prev_x-x)>threshold:
prev_x = x
x = (x+number/x)/2
square_root = x
return square_root
要实际使用guess
,您应该在接近平方根时不断更新它:
def sqrt(number,guess,threshold):
while abs(guess - number / guess) > threshold:
guess = (guess + number / guess) / 2
return guess