编写递归函数,实现二分查找问题。
时间: 2024-10-11 10:15:04 浏览: 24
二分查找是一种在有序数组中查找特定元素的算法,它通过反复将搜索范围缩小一半来提高效率。在编写递归版本的二分查找时,我们可以按照以下步骤:
1. 定义基本情况:如果数组为空或者只有一个元素,直接返回数组索引(若目标值等于第一个元素则返回0,否则返回-1)。
2. 递归条件:假设数组有n个元素,我们将数组分为两部分,中间位置的索引称为mid。然后我们比较目标值(target)与中间元素:
- 如果 target 小于中间元素,则在左半部分的子数组中继续查找,调用递归函数并传入left(开始索引)和 mid-1;
- 如果 target 大于中间元素,则在右半部分的子数组中查找,调用递归函数并传入mid+1和 right(结束索引);
- 如果 target 等于中间元素,找到了目标,返回 mid。
递归函数的伪代码示例(Python风格):
```python
def binary_search(arr, low, high, target):
if low > high: # 边界情况:数组为空或只有一个元素
return -1
mid = (low + high) // 2
if arr[mid] == target: # 目标在中间
return mid
elif arr[mid] < target: # 需要在右半部分查找
return binary_search(arr, mid + 1, high, target)
else: # 需要在左半部分查找
return binary_search(arr, low, mid - 1, target)
```
阅读全文