我正在尝试使用return mid返回二进制搜索中的位置,如果key等于lst[mid]
,但它没有给出任何结果。我可以打印mid:
def binary_search(lst,l,r,key):
print (lst[l:r])
mid = (l + r) // 2
if key == lst[mid]:
print([lst[mid]])
#print(mid)
return mid
elif key > lst[mid]:
l = mid + 1
binary_search(lst,l,r,key)
else:
r = len(lst[:mid])
binary_search(lst,l,r,key)
list = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
print(binary_search(list, 0, len(list), 14 ))
发布于 2019-04-19 02:57:35
当您以递归方式调用binary_search
时,需要返回结果。例如:
def binary_search(lst,l,r,key):
print (lst[l:r])
mid = (l + r )//2
if key == lst[mid]:
print ([lst[mid]])
#print (mid)
return mid
elif key > lst[mid]:
l = mid + 1
return binary_search(lst,l,r,key) # return me
else:
r = len(lst[:mid])
return binary_search(lst,l,r,key) # and me
https://stackoverflow.com/questions/55752231
复制相似问题