在Python中,我编写了一个自定义代码sqrt(x,delta),用delta-close近似计算给定数字的平方根。它使用while循环和类似二进制搜索的算法。
代码:from __future__ import division
def sqrt(x, delta):
start = 0
end = x
while (end-start) > delta:
middle = (start + end) / 2
middle_2 = middle * middle
if middle_2 < x:
start = middle
print "too low"
elif middle_2 > x:
end = middle
print "too high"
else:
return middle
result = (start + end) / 2
return result
它基本上是有效的,而且速度很快,但也有一些情况下,它会进入一个无限while循环。
示例:
^{pr2}$
我第一次以为是数字超过限制,比如1e20。。但后来它也起到了作用。另外,我认为is是关于1e‘奇数’或1e‘偶数’的数字,但正如我们在示例中看到的,并不是这样。我也试过用不同的delta代替1/1024,但它们表现出相似的行为。
我很感激任何能说明幕后发生了什么导致这种行为的解释。在