我需要编写一个简单的递归函数,从index:left到index:right搜索数组。我们不必担心无效的左输入和右输入,它们总是正确的。如果数组中有一个值等于键,它将返回该值的索引。如果密钥不在数组中,它将返回
-1.
我真的不知道为什么我的函数不起作用。我觉得应该。只有当键是数组的第一个索引时,它才有效。
def binary_search_recursive(array: List[int], left: int, right: int,
key: int) -> int:
if left <= right:
if array[left] == key:
return left
else:
binary_search_recursive(array, left + 1, right, key)
return -1
测试:
binary_search_recursive([0,1,5,6,23,45], 0, 5, 5)
应返回:
2
返回:
-1