C语言 递归方法求数组的最大值

数组是已知的十个数的。最好用最简单的思想……最好还有注释……谢了。

  #include <stdio.h>
  int max(int arr[], int len)
  {
  if(1 == len) // 只有一个元素
  {
  return arr[0];
  }
  int a = arr[0]; //第一个元素
  int b = max(arr + 1, len - 1); //第二个元素起的最大值
  return a > b? a : b;
  }
  int main(void)
  {
  int a[] = {1,2,3,4,5,6,7,8,9,10};
  printf("最大值:%d\n", max(a, sizeof(a) / sizeof(a[0])));
  return 0;
  }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-18
int max(int*a,int len)
{
if(len==1)return a[0];
//max(a,len-1)返回数组前len-1个数中的最大数,并和a[len-1]比较,返回较大者
return a[len-1]>max(a,len-1)?a[len-1:max(a,len-1);
}
第2个回答  2011-12-18
int max(int arr[], int len)
{
if(1 == len) // 只有一个元素
{
return arr[0];
}
int a = arr[0]; //第一个元素
int b = max(arr + 1, len - 1); //第二个元素起的最大值
return a > b? a : b;
}本回答被网友采纳
第3个回答  2011-12-18
编译通过
#include <stdio.h>

int max(int *arr,int maxnow)
{
int i,temp = maxnow;
for(i=0;i<10;i++)
if(arr[i] > maxnow)
maxnow = arr[i];
if(temp == maxnow)
return maxnow;
else
return max(arr,maxnow);
}
int main(void)
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d",max(arr,arr[0]));
getchar();
}
相似回答