递归算法3——简单递归之求n个数的最大值
作者:互联网
【分析】
假设元素序列存放在数组a中,数组a中n个元素的最大值可以通过将a[n-1]与前n-1个元素最大值比较后得到。
当n=1时有findmax(a,n)=a[0];
当n≥1时,有findmax(a,n)=(a[n-1] > findmax(a, n-1) ? a[n-1] : findmax(n-1))。
也就是说,数组a中只有一个元素时,最大者是a[0],超过一个元素时,则要进行比较最后一个元素a[n-1]与前n-1个元素的最大值,其中较大的元素即为所求。而前n-1个元素中的最大值则需要继续调用findmax函数。
code:
#include<stdio.h>
int findmax(int a[], int n);
void main()
{
int a[] = { 55,33,22,77,99,88,11,44 }, n, i;
n = sizeof(a) / sizeof(a[0]);
printf("数组中的元素:");
for (i = 0; i < n; i++)
printf("%4d", a[i]);
printf("\n最大的元素:%d\n", findmax(a, n));
getchar();
}
int findmax(int a[], int n)
{
int m;
if (n <= 1)
return a[0];
else
{
m = findmax(a, n - 1);
return a[n - 1] >= m ? a[n - 1] : m;
}
}
结果:
凌空的桨 发布了229 篇原创文章 · 获赞 208 · 访问量 31万+ 关注
标签:之求,递归,findmax,int,最大值,元素,数组,printf 来源: https://blog.csdn.net/baidu_36669549/article/details/104136870