如何在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