【发布时间】:2018-09-05 02:19:26
【问题描述】:
我有一个问题,我的二进制搜索算法找到 2 的平方根似乎处于无限循环并永远运行:
num = 2
low = 1
high = num
i = 0
while((i**2) != 2): #was while(low<high): but wasnt working with it either
i = low + (high - low) / 2;
sqrt = i * i
if (sqrt == num):
print(i)
elif(sqrt < num):
low = i
else:
high = i
print(sqrt)
testRoot = 2 ** (.5)
print(testRoot)
我不确定我的 while 循环是否存在问题。我认为这将是一个非常简单的二进制搜索算法,稍作修改以适应平方根方面。
运行我的代码时,我似乎无法让它产生任何输出。我不确定代码或编译器是否存在真正的问题,因为我认为我遵循的算法与我过去的算法非常接近。
【问题讨论】:
-
Python 2 还是 Python 3?
-
@MadPhysicist 对不起,我要问的问题是,我的代码是错误的,还是 Repl.it 上的编译器实际上有问题?
-
您是否知道没有任何具有有限二进制表示的数字可以平方以获得正好 2?
-
当我运行它时,它实际上只是运行而没有产生任何输出。
标签: python binary-search numerical-methods square-root