prologue:最近关注到一道题:设计一个递归函数找出一个数组元素中的最大值并返回,我的codes如下:
#include<stdio.h>
int Mmax(int a[],int n);
int main()
{
int a[10]={4,3,2,6,7,8,9,1,10,5};
int result; //接受结果
result=Mmax(a,10);
printf("数组元素最大值:%d",result);
return 0;
}
int Mmax(int a[],int n)//函数实现
{
if(n==1)
return a[0];
else
return a[n-1]>Mmax(a,n-1)?a[n-1]:Mmax(a,n-1);
}
因为之前学递归的时候觉得麻烦草草带过,所以这次写完后我又上网找了很多篇关于递归的文章进行阅读,总算是有了一番自己的理解,首先递归的定义,简而言之,也就是在程序中的某个函数自己调用自己的过程,具体到这道题,我定义了一个Mmax()函数,功能是找出并返回传入数组的元素的最大值,既然是递归函数,那么函数体中就会调用函数自身,这个函数自身又会接着调用函数自身,那么显然,为了防止递归函数无限递归(类似于循环中的死循环),我们需要给递归函数找到一个出口,也就是满足一定条件的时候,我们可以不用调用函数自身,直接返回结果,具体到这个问题,什么时候我们可以直接得到数组元素中的最大值呢?答案很显然,当数组元素只有一个元素时,我们可以直接返回这个元素本身,