c++经典的递归案例:使用尾递归优化二分查找
作者:野牛程序员:2023-11-20 10:12:04 C++阅读 2704
c++经典的递归案例:使用尾递归优化二分查找
#include <iostream>
// 经典的递归案例:使用尾递归优化二分查找
int binarySearchTail(int arr[], int low, int high, int target, int result = -1) {
// 基本情况:如果low大于high,返回结果;否则,递归调用
if (low > high) {
return result;
} else {
// 计算中间索引
int mid = low + (high - low) / 2;
// 如果中间元素等于目标元素,更新结果为中间索引
if (arr[mid] == target) {
result = mid;
}
// 如果中间元素大于或等于目标元素,继续在左半部分查找
if (arr[mid] >= target) {
return binarySearchTail(arr, low, mid - 1, target, result);
} else {
// 如果中间元素小于目标元素,继续在右半部分查找
return binarySearchTail(arr, mid + 1, high, target, result);
}
}
}
int main() {
// 有序数组
int sortedArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 6;
// 在有序数组中查找目标元素
int result = binarySearchTail(sortedArray, 0, 9, target);
// 输出查找结果
if (result != -1) {
std::cout << "目标元素 " << target << " 在数组中的索引是 " << result << std::endl;
} else {
std::cout << "目标元素 " << target << " 不在数组中" << std::endl;
}
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

