递归来实现二分法查找要求
时间: 2024-05-10 18:15:29 浏览: 75
二分法查找是一种常用的查找算法,它的时间复杂度为 O(logn)。递归是一种实现二分法查找的常用方法。下面是使用递归实现二分法查找的示例代码:
```python
def binary_search(arr, left, right, target):
if left > right:
return -1
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search(arr, mid+1, right, target)
else:
return binary_search(arr, left, mid-1, target)
```
这里的 `binary_search` 函数接收一个数组 `arr`,以及要查找的值 `target`,同时还需要指定一个查找范围,即 `left` 和 `right` 分别表示要在数组的哪个位置开始查找和结束查找。在函数内部,首先判断查找范围是否合法,如果不合法则返回 -1 表示未找到。接着计算中间位置 `mid`,如果中间位置的值等于目标值,则返回中间位置的索引。如果中间位置的值小于目标值,则在右半部分继续查找,否则在左半部分继续查找。这个过程通过递归来实现。
调用时,可以使用以下方式:
```python
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, 0, len(arr)-1, target)
if result != -1:
print("找到了,索引为:", result)
else:
print("未找到")
```
这里的 `arr` 表示要查找的数组,`target` 表示要查找的值。调用 `binary_search` 函数时,需要指定查找的范围,这里的范围为整个数组,即从 0 到 len(arr)-1。如果找到了目标值,则返回它的索引,否则返回 -1。
阅读全文