尝试使用循环函数查找数字的平方根。 我正在尝试使用巴比伦方法,但它不会返回正确的答案。如果有人指出我有错误,将不胜感激。
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)
答案 0 :(得分:0)
根本不需要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
答案 1 :(得分:0)
更改
x =(x +猜测/ x)/ 2
,因为这会发展到 guess 的平方根。更改为
CREATED TABLE Cars(
company text,
model text,
year int,
vin text
)
将return语句移出while循环
初始化x进行猜测,而不是数字/ 2