【发布时间】:2016-09-02 16:57:45
【问题描述】:
我最近在不使用sqrt() 的情况下在python 中查找数字的平方根。我遇到了这段代码,很难理解这段代码中的逻辑:
def sqrt(x):
last_guess= x/2.0
while True:
guess= (last_guess + x/last_guess)/2
if abs(guess - last_guess) < .000001: # example threshold
return guess
last_guess= guess
更具体地说,在上面的代码中计算 guess 背后的逻辑。谁能帮我理解逻辑?
【问题讨论】:
-
请说明您遇到的问题:您在网络上搜索“平方根算法”应该会找到很多点击量来回答您的问题。这也称为牛顿法(适用于平方根)或巴比伦法。
-
逻辑:将最后的猜测初始化为½数。计算一个新的猜测,它是最后一个猜测的平均值和这个数字除以最后一个猜测。检查这个新值是否与上一个值足够不同以将其作为答案返回。如果不是,则将最后的猜测设为新的并重复该过程。假设这个平均过程的每次迭代都会更接近答案。
标签: python square-root