在Python中返回None

时间:2017-10-25 04:57:21

标签: python recursion return

我试图在Python中递归编码二进制搜索功能。我只想根据搜索结果返回True或False。在某些真实情况下,我得到无。我不明白我的for循环有什么问题。

请帮帮我!感谢

def func(data, key):
    '''
    data: input list
    key: the number to be searched
    output: return Boolean
    '''
    low = 0
    high = len(data)
    mid = (low+high)//2
    if(key>data[high-1]):
        return False
    if(data[mid]==key):
        return True
    elif(key>data[mid]):
        search_sorted_rec(data[mid+1:high],key)
    elif(key<data[mid]):
        search_sorted_rec(data[low:mid],key)

data1=func((1,2,3,4,5,6,7,8),8)

print(data1) # I got None

1 个答案:

答案 0 :(得分:1)

你正在做一个递归函数。所以在递归调用时,返回结果。所以不是:

elif(key>data[mid]):
    search_sorted_rec(data[mid+1:high],key)

但相反:

elif(key>data[mid]):
    return search_sorted_rec(data[mid+1:high],key)