✏️ 纠错
第 185 题 / 共 251 题
第9题 下面的C++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。
int find_max_recursive(const vector<int>& nums, int left, int right) {
    if (left == right) {
        return nums[left];
    }

    int mid = left + (right - left) / 2;
    int left_max = find_max_recursive(nums, left, mid);
    int right_max = find_max_recursive(nums, mid + 1, right);

    return max(left_max, right_max);
}

int find_max(const vector<int>& nums) {
    if (nums.empty()) {
        throw invalid_argument("输入数组不能为空");
    }
    return find_max_recursive(nums, 0, nums.size() - 1);
}
📝 题目解析

答案:C

知识点:分治算法、递归算法的概念及应用,与贪心算法的区别

解析:该算法将数组分为左右两部分,分别求最大值后合并,符合分治算法思想(分治+递归),因此A、B正确。贪心算法强调“局部最优即全局最优”,与该算法无关,故C错误。递推算法是迭代实现,该算法是递归,因此D正确。