我正在Python中实现二进制搜索,我为此创建了一个函数,但不知何故,我介于两者之间。我的功能返回“ None”作为输出,但我不知道为什么这样做。我的代码在这里:
x = [1,2,3,4,5,6,7,8,9,10]
y = 9
def bin_search(s_list, key):
print(s_list)
m = s_list[len(s_list)//2]
if m == key:
return 1
elif m < key:
bin_search(s_list[s_list.index(m)+1:],key)
else:
bin_search(s_list[0:s_list.index(m)],key)
print(bin_search(x,y))它给出以下输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 8, 9, 10]
None
进行递归调用时,请确保return
值正确,以便将它们沿堆栈传递给调用方。只写会bin_search(...)
忽略返回值。
if m == key:
return 1
elif m < key:
return bin_search(s_list[s_list.index(m)+1:],key)
else:
return bin_search(s_list[0:s_list.index(m)],key)