第1个回答 2010-06-02
#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;
}
第2个回答 2010-06-03
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;
}