gpt4 book ai didi

python - 为什么我的递归搜索功能不起作用?

转载 作者:行者123 更新时间:2023-12-02 01:41:37 27 4
gpt4 key购买 nike

我需要编写一个简单的递归函数,从索引:左到索引:右搜索数组。我们不必担心左输入和右输入无效,它们总是正确的。如果数组中存在等于键的值,则返回该值的索引。如果该键不在数组中,则返回 -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

最佳答案

要修复代码,您需要返回 else 语句:

def binary_search_recursive(array: list[int], left: int, right: int,
key: int) -> int:
if left <= right:
if array[left] == key:
return left
else:
return binary_search_recursive(array, left + 1, right, key)
return -1

但是,它仍然不是二分搜索。

编辑:真正的二分搜索如下所示:

def binary_search_recursive(array: list[int], left: int, right: int,
key: int) -> int:
if right >= left:

center = (right + left) // 2

if array[center] == key:
return center

elif array[center] > key:
return binary_search_recursive(array, left, center - 1, key)
else:
return binary_search_recursive(array, center + 1, right, key)
return -1

关于python - 为什么我的递归搜索功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71530794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com