问题描述
- C++问题求解,,大神进,,说一下过程
-
#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到底是多少就知道详细的函数 出战入站的过程了。
时间: 2024-10-22 07:24:20