我试图在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
答案 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)