当前位置:首页 C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击