温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - My function for binary search returns None, I can't figure out why
python python-3.x recursion search

python - 我的二进制搜索功能返回None,我不知道为什么

发布于 2020-04-07 23:56:38

我正在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

查看更多

提问者
Suleman Elahi
被浏览
54
John Kugelman 2020-02-01 04:17

进行递归调用时,请确保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)