如何在Python中生成递归平方根?

如何在Python中生成递归平方根?,python,recursion,square-root,Python,Recursion,Square Root,我有这个密码: def root(x,n): if n==0: return x else: return 0.5**(x/root(x,n-1)+root(x,n-1)) 但是: 为什么?? 而且它不适用于其他平方根…看起来您正在尝试实现计算平方根的算法(尽管我真的不知道);不过,我不知道为什么在这里使用内置的power操作符(**),你不应该这样做 递归平方根的基本策略是猜测平方根,检查猜测的准确性,如果旧的猜测不够准确,则创建一个新

我有这个密码:

def root(x,n):    
    if n==0:
        return x
    else:
        return 0.5**(x/root(x,n-1)+root(x,n-1))
但是:

为什么??
而且它不适用于其他平方根…

看起来您正在尝试实现计算平方根的算法(尽管我真的不知道);不过,我不知道为什么在这里使用内置的power操作符(**),你不应该这样做

递归平方根的基本策略是猜测平方根,检查猜测的准确性,如果旧的猜测不够准确,则创建一个新的猜测,然后继续递归地这样做,直到猜测足够接近真实的根才能返回

为了控制结果的准确性(以及递归的深度),我们需要能够根据实际平方根检查我们的猜测;我们可以把它平方,然后把它和我们找到的非常小的平方根之间的差值

def goodEnough(guess, x):
    return abs((x - (guess * guess))) <= .01 #change this value to make the function more or less accurate
现在,我们可以将其全部放在一起:

def root(guess, x):
    if goodEnough(guess, x):
        return guess
    else:
        return root(newGuess(guess, x), x)
我们还可以通过一个步骤消除猜测参数:

def sqrt(x):
    return root(x/2, x) #x/2 is usually somewhat close to the square root of a number

你的指数不正确,应该是:
(x/root(x,n-1)+root(x,n-1))**0.5
也许你应该指定你正在使用的算法,而不是让我们猜测;)但是root(1234,2)给了我8.3819…我不明白你想要代码做什么。
n
应该代表什么?
def root(guess, x):
    if goodEnough(guess, x):
        return guess
    else:
        return root(newGuess(guess, x), x)
def sqrt(x):
    return root(x/2, x) #x/2 is usually somewhat close to the square root of a number