//递归方法 //选择排序法 思想:默认第一个数为最大值,从第二个数依次与max比较,若有比max大的数,则存入max中。
int maximum(int a[],int n) int maximum(int a[],int n)
{ {
int max; int max=a[0];
if(n==1) for(i=1;i<=n;i++)
return a[0]; {
max=maximum(a,n-1); if(a[i]>max)
if(max<a[n-1]) max=a[i];
max=a[n-1]; }
return max; return max;
} }
int main(){
int i, n;
int max,a[n];
printf("请输入数组元素的个数: ");
scanf("%d",&n);
printf("请输入数组元素: ");
for(i=1;i<=n;i++)
scanf("%d",&a[i]); //数组前忘了加取址符号,输出错误
printf("max of the number is %d",maximum(a,n));
}
递归:对数据个数n进行递归,只有一个数时,那么这个数就是最大值,即a[0];当n>1时,若能求得前n-1个数的最大值,再与第n个数比较,便能求出n个数的最大值,求法与n个数时相同,问题规模降低。