C语言求N个数的最大值,递归算法
收起
知与谁同
2018-07-16 12:01:12
4955
0
3
条回答
写回答
取消
提交回答
-
int Max(int a[],int n)
{
//n为数组的长度
if(n=1)
{ return a[0];}
int av1=a[0]; //取出第一个数
int* atmp=a;
atmp++;
int av2=Max(atmp,n-1); //对第一个后面的数组所有数求最大值
return (av1>av2)?av1:av2;
}
2019-07-17 22:54:52
-
#include<stdio.h>
#define MAX_SIZE 1024 //输入个数的最大值
/*@@ getMax的参数为curr(当前下标,数组,数组大小,当前最大值) @@*/
void getMax(int curr,int arr[],int n,int &currMax)
{
if(curr>=n)//递归到当前下标curr<n
return;
if(arr[curr]>currMax)//如果当前数值arr[curr]比当前最大值大,则更换最大值
currMax=arr[curr];
getMax(curr+1,arr,n,currMax);//子递归
}
int main()
{
int i,n,max;
int arr[MAX_SIZE];
puts("请输入个数n:");
scanf("%d",&n);
printf("请输入%d个数:\n",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
getMax(0,arr,n,max);
printf("最大的值为: %d\n",max);
return 0;
}
2019-07-17 22:54:51
-
#include<stdio.h>
int max(int n,int numbers[],int index)
{
if(index<(n-1)){
if(numbers[index]>numbers[index+1])
numbers[index+1]=numbers[index]; //没到最后位则把大数放后面
index++;
return max(n,numbers,index);
}
else if(index==(n-1)){
return numbers[index]; //到最后位直接返回最后位就是最大的
}
else{
return -1; //error,数组越界时返回-1
}
}
void main()
{
int numbers[]={1,3,8,2,4,6};
int N=6;
printf("max number is %d\n",max(N,numbers,0));
}
我写了注释,自己揣摩下应该能懂
2019-07-17 22:54:51