C++写出二分查找的递归函数实现
时间: 2024-12-19 19:20:57 浏览: 3
算法设计与分析实验_二分检索的递归实现
4星 · 用户满意度95%
在C++中,你可以使用递归来实现二分查找(Binary Search)。以下是针对有序数组的一个基本递归实现:
```cpp
#include <iostream>
// 定义二分查找的递归函数
int binarySearchRecursive(const std::vector<int>& arr, int low, int high, int target) {
if (low <= high) {
int mid = low + (high - low) / 2;
// 如果目标值等于中间值,则返回索引
if (arr[mid] == target)
return mid;
// 如果目标值小于中间值,搜索左半部分
else if (arr[mid] > target)
return binarySearchRecursive(arr, low, mid - 1, target);
// 否则,搜索右半部分
else
return binarySearchRecursive(arr, mid + 1, high, target);
} else { // 当范围为空时,表示未找到目标,返回 -1
return -1;
}
}
// 测试函数
int main() {
std::vector<int> nums = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearchRecursive(nums, 0, nums.size() - 1, target);
if (result != -1)
std::cout << "Element found at index: " << result << std::endl;
else
std::cout << "Element not found in the array" << std::endl;
return 0;
}
```
在这个函数中,`binarySearchRecursive`会不断缩小搜索范围,直到找到目标值或搜索范围为空(即没有找到目标值)。如果找到,返回目标值的索引;否则,返回 -1。
阅读全文