这可能是晚了一点回答,但最简单而准确的方法来计算平方根是牛顿的方法。
你有一个数字,你想要计算它的平方根(num),你猜它的平方根(estimate)。估计值可以是大于0的任何数字,但有意义的数字会显着缩短递归调用深度。
new_estimate = (estimate + num/estimate)/2
这条线用这两个参数计算出更准确的估计值。您可以将new_estimate值传递给函数,并计算另一个比前一个更精确的new_estimate,或者可以像这样做一个递归函数定义。
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num/estimate)/2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
例如,我们需要找到30的平方根。我们知道,结果是5和6
newtons_method(30,5)
之间的号码是30和估计5.每个递归调用的结果是:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
最后的结果是最准确的计算数字的平方根。它与内置函数math.sqrt()具有相同的值。