未给出响应的代码(四进制搜索算法)



所以我是编码的新手,作为第一个创建四元搜索算法的项目,我尝试过用递归的方法来做,但它给了我一个";最大递归";错误,所以我尝试以迭代的方式进行,但这次它甚至没有给我一个响应,我不知道为什么,这是代码:

def quaternary_search(y,x):
low = 0
high = len(y) -1
mid1 = 0
mid2 = 0
mid3 = 0
while high>=low:
mid1 = int(round(high/4))
mid2 = int(round(high/2))
mid3 = int(round(3*high/4))
if y[mid1] == x:
return mid1

elif y[mid2] == x:
return mid2
elif y[mid3] == x:
return mid3
elif y[mid1] > x and y[mid2] > x and y[mid3] > x:
high = mid1 - 1
elif y[mid1] < x and y[mid2] > x and y[mid3] > x:
low = mid1 + 1
high = mid2 - 1
elif y[mid1] < x and y[mid2] < x and y[mid3] > x:
low = mid2 + 1
high = mid3 - 1
elif y[mid1] < x and y[mid2] < x and y[mid3] < x:
low = mid3 + 1
return -1
y = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
x = int(input("What are you searching?"))
result = quaternary_search(y,x)
if result != -1:
print("Element is at index",str(result))
else:
print("Element is not found")
```

在将+1传递给函数时,只需将其添加到x变量即可。列表索引从0开始,因此需要添加1。

result = quaternary_search(y,x+1)

似乎可以处理这个小变化,当我输入8时,它显示在第8个指数。

What are you searching?8
Element is at index 8

最新更新