编辑代码

#include <bits/stdc++.h>
using namespace std;
 
void max_min(vector<int>&nums,int left, int right, int &fmax, int &fmin)
{
    int max_left,max_right,mid,min_left,min_right;
    if (left==right)
    {
        fmin=fmax=nums[left];
        return;
    }
    else if (right-left==1)
    {
        if (nums[left]>=nums[right])
        {
            fmax=nums[left];
            fmin=nums[right];
        }
        else
        {
            fmax=nums[right];
            fmin=nums[left];
        }
        return;
    }
    mid=left+((right-left)>>1);
    max_min(nums,left,mid,max_left,min_left);
    max_min(nums,mid+1,right,max_right,min_right);
    if (max_left>=max_right) fmax=max_left;
    else fmax=max_right;
    if (min_left>=min_right) fmin=min_right;
    else fmin=min_left;   
}
 
int main()
{
    vector<int>nums={11,9,20,56,42,3,7,15,16};
    int fmax=INT_MAX;
    int fmin=INT_MIN;   
    max_min(nums,0,6,fmax,fmin);
    cout<<fmin<<" "<<fmax<<endl;
    return 0;
}