试将折半查找的算法改写成递归算法
时间: 2023-03-20 13:01:25 浏览: 210
chazhao.rar_折半查找 递归算法
5星 · 资源好评率100%
折半查找算法(也称二分查找)是一种用于查找已排序数组中特定元素的算法,其非递归实现如下:
```
function binarySearch(arr, target):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
下面是折半查找的递归实现:
```
function binarySearchRecursive(arr, target, left, right):
if left > right:
return -1
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binarySearchRecursive(arr, target, mid + 1, right)
else:
return binarySearchRecursive(arr, target, left, mid - 1)
```
在递归版本的二分查找中,参数 `left` 和 `right` 表示待搜索范围的左右边界。如果搜索区间为空,则返回 `-1` 表示未找到。否则,计算中间位置 `mid`,并将搜索范围缩小到左半部分或右半部分,直到找到目标元素或搜索区间为空。
阅读全文