#include
using namespace std;
int diguimax(int a[],int n)
{
int f;
if(n==1) return a[0];
f=diguimax(a+1,n-1);
if(f>a[0]) return f;
return a[0];
}
int main()
{
int c[]={7,29,36,28,6,-5};
cout<<diguimax(c,6)<<endl;
return 0;
}
你可以用2个数的例子,自己分析一下就明白了。
#include<iostream>
using namespace std;
int diguimax(int a[],int n)
{
int f;
if(n==1) return a[0];
f=diguimax(a+1,n-1);//这里递归调用,一直到最后1个数,有返回值,给了f
//f和前一个数比较,谁大返回谁
if(f>a[0]) return f;
return a[0];
}
int main()
{
int c[]={7,29,36,28,6,-5};
cout<<diguimax(c,6)<<endl;
return 0;
}
递归的求数组最大值,每次下标减一,你可以在diguimax函数中增加打印函数,看看f到底是多少就知道详细的函数 出战入站的过程了。