【发布时间】:2020-10-26 00:50:35
【问题描述】:
我试图在 python 中编写二进制搜索。我写的是:
arr = [6, 13, 14, 25, 33, 43, 51, 53, 64, 72, 84, 93, 95, 96, 97]
def binarySearch(arr, low, high, key):
if(low <= high):
mid = (low + high) // 2
if(arr[mid] == key):
return key
elif(arr[mid] > key):
binarySearch(arr, low, mid - 1, key)
else:
binarySearch(arr, mid + 1, high, key)
else:
return -1
i = binarySearch(arr, 0, len(arr) - 1, 33)
print(i)
它返回无。然后我发现我没有在递归调用的开头放置 return 语句。但在我看来,如果没有返回语句,它无论如何都应该返回密钥,因为它首先控制它是否与密钥匹配。为什么函数找到键后继续执行并返回None而不是键。
【问题讨论】:
-
你真正想做的是返回函数,例如做
return binarySearch(arguments)而不是简单的binarySearch()
标签: python algorithm recursion return