给定一个数组,求最大数

//递归方法                                                                                        //选择排序法  思想:默认第一个数为最大值,从第二个数依次与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));     //好几次写成a,n

}

递归:对数据个数n进行递归,只有一个数时,那么这个数就是最大值,即a[0];当n>1时,若能求得前n-1个数的最大值,再与第n个数比较,便能求出n个数的最大值,求法与n个数时相同,问题规模降低。

猜你喜欢

转载自www.cnblogs.com/laurarararararara/p/10686587.html