【递归】仔细思考后对于递归的理解

本文介绍了递归的基本概念,并通过一个寻找数组最大值的例子详细阐述了递归函数的三要素:函数功能、递归出口和等价关系式。同时,列举了两个经典的递归问题实例——使用递归计算斐波那契数列和解决汉诺塔问题,帮助读者深入理解递归思想。
摘要由CSDN通过智能技术生成

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()函数,功能是找出并返回传入数组的元素的最大值,既然是递归函数,那么函数体中就会调用函数自身,这个函数自身又会接着调用函数自身,那么显然,为了防止递归函数无限递归(类似于循环中的死循环),我们需要给递归函数找到一个出口,也就是满足一定条件的时候,我们可以不用调用函数自身,直接返回结果,具体到这个问题,什么时候我们可以直接得到数组元素中的最大值呢?答案很显然,当数组元素只有一个元素时,我们可以直接返回这个元素本身,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林琊LinyaT052

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值