使用巴比伦方法的平方根返回错误的值

时间:2018-09-18 03:20:31

标签: python python-3.x

尝试使用循环函数查找数字的平方根。 我正在尝试使用巴比伦方法,但它不会返回正确的答案。如果有人指出我有错误,将不胜感激。

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)

2 个答案:

答案 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)

  1. 更改

    x =(x +猜测/ x)/ 2

,因为这会发展到 guess 的平方根。更改为

 CREATED TABLE Cars(
    company text,
    model text,
    year int,
    vin text
 )
  1. 将return语句移出while循环

  2. 初始化x进行猜测,而不是数字/ 2