//我的第一个递归程序
//分治思想,用递归实现
//递归,求的一个数组中的最大和最小元素 递归的结构就是 在函数里面 刚开始是结束条件 然后写如果不满足条件的话 怎样递推
//有多个返回值的时候,把要返回的作为参数 写到 函数名字中
#include<iostream>
using namespace std;
int arr[9]={22,13,-5,-8,15,60,17,31,47};
void MAXMIN(int low,int high,int& fmax,int& fmin) //注意 这里是引用 地址传递
{
if(low == high)
{
fmax=arr[low];
fmin=arr[low];
// cout<<fmax<<" "<<fmin<<endl;
}
else if(low == high -1)//一直给分到,最小的规模,可以一次比较之后,就出结果(分治的思想)
{
if(arr[low]<arr[high])
{
fmax= arr[high];
fmin= arr[low];
}
else
{
fmax=arr[low];
fmin=arr[high];
}
}
else
{
int mid=(low+high)/2;
int amax,amin,bmax,bmin;
MAXMIN(low,mid,amax,amin);
MAXMIN(mid+1,high,bmax,bmin);
fmax=(amax>bmax ? amax:bmax);
fmin=(amin<bmin?amin:bmin );
}
return ;
}
int main()
{
int max=0,min=0;
MAXMIN(0,8,max,min); //如果不是引用的话 那么 max和min传走了之后,不会再回来
cout<<max<<" "<<min<<endl;
return 0;
}