使用递归函数实现数列的二分查找
时间: 2024-10-19 19:17:39 浏览: 18
函数递归练习(斐波那契数列,二分查找)
5星 · 资源好评率100%
递归函数实现数列的二分查找是一种搜索算法,它适用于已排序的数列。二分查找也被称为折半查找,它的基本思想是每次将待查找区间缩小一半。对于一个递归版本的二分查找,通常步骤如下:
1. **基本情况**:如果数列只有一个元素或者目标值正好等于这个元素,那么返回该元素的索引作为结果,表示找到。
2. **递归情况**:对于大于两个元素的数列,计算中间元素的索引 `mid`。如果目标值小于中间元素,则在左半部分(下标从0到 `mid - 1`)继续查找;如果目标值大于中间元素,则在右半部分(下标从 `mid + 1` 到数组长度减一)查找;如果相等,则返回 `mid` 作为结果。
3. **调用自身**:在每一步递归调用中,都将查找范围缩小到原范围的一半,直到满足基本情况。
以下是递归二分查找的一个伪代码示例:
```python
def binary_search(arr, target, start=0, end=None):
if end is None:
end = len(arr) - 1
if start > end: # 当开始位置大于结束位置,说明遍历完毕未找到
return -1 # 返回-1表示元素不在数列中
mid = (start + end) // 2
if arr[mid] == target: # 找到目标值
return mid
elif arr[mid] < target: # 目标值在右侧
return binary_search(arr, target, mid + 1, end)
else: # 目标值在左侧
return binary_search(arr, target, start, mid - 1)
# 使用时传入有序列表和要查找的目标值即可
```
阅读全文