当前位置:首页 > 创业分享 > 正文内容

什么是递归?一文读懂

福瑞号2023-01-18 23:00:06创业分享309

一.什么是递归?

递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单地说一个是递的过程,一个是归的过程。简单用代码来理解:

public void fun(参数) {

if (终止条件) {

return;

}

fun(参数);

(其他判断条件或语句);

}

在上边代码中,当第一次进入函数时,先判断是否符合终止条件,符合则直接结束函数,不符合入下一语句,调用自己重新进入下一层自身函数,(注意这是最外一层将不向下继续执行语句,外层卡在fun(参数处)),这个调用自己进入自身函数的操作过程即为“递”的过程。假设进入下一层后符合终止条件,返回结果,此时之前进入自身函数执行完成返回最外一层函数,最外一层函数递归调用处得到结果,(即内层函数执行完成得到结果返回值),这个过程即为“归”的过程。这时最外一层函数才能继续执行下一语句,直至函数运行完成。

什么是递归?一文读懂-图1

二.判断递归使用的场景

1.大问题可以拆分为多个子问题。

2.原问题和拆分后的子问题除了数据规模不同,解决思路完全相同。

3.存在递归终止条件。

递归在线性数据结构中使用不太明显,迭代基本可以很容易地解决问题。

递归在非线性结构中非常重要,比如二叉树,回溯,典型的树形问题-九宫格字母组合

三.递归代码的写法,(一定要注意方法的语义)

递归必须具备两个条件,

  • 一是有边界,即终止条件。

  • 二是需要调用自己。

这两个条件缺一不可,并且其中终止条件语句必须在递归调用语句之前。如果顺序颠倒则递归函数会进入死循环,永远退不出来,会出现堆栈溢出异常(StackOverflowError)。

在递归函数中,终止条件可以不止一个,递归调用也可以通过一些逻辑语句分成好几个。

四.讲一个简单且经典的实例(我认为的)

青蛙跳台阶问题:一只青蛙要跳上n层高的台阶,一次能跳一阶,也可以跳2阶,请问这只青蛙跳上n层高的台阶有多少种跳法?

问题解决:这个问题有好几种解法,这里就讲递归方法,这个问题需要逆向思维,如果从第一个台阶就开始算,就比较难想到终止条件,以及递归调用方式。我们可以让青蛙下台阶,一次可以下一个,也可以下两个。这时我们可以知道:

当n=1时,只有一种方法。

当n=2时,有两种方法。

其n>2时,青蛙可以选择跳两层台阶,也可以选择跳一层台阶。

以上我们可以得到,终止条件为台阶剩下1或2层时可以直接得到结果,即为边界。当n>2时我们可以使用递归语句调用自身。这样就可以写出递归代码:

public int climbStairs(int n){

//终止条件

if(n == 1)

return 1;

if(n == 2)

return 2;

//递归调用,此时青蛙可以选择跳一阶也可以跳两阶,所以将两种情况相加起来

return climbStairs(n-1) + climbStairs(n-2);

扫描二维码推送至手机访问。

版权声明:本文由福瑞号发布,如需转载请注明出处。

本文链接:https://www.furui.com.cn/42623.html

标签: 什么是递归

“什么是递归?一文读懂” 的相关文章

醉翁亭在哪里(醉翁亭记中的醉翁亭在哪)

醉翁亭在哪里(醉翁亭记中的醉翁亭在哪)

醉翁亭记中的醉翁亭在今安徽省滁州市西南琅琊山麓。 醉翁亭记是唐宋八大家之一欧阳修所创作的一篇文章,宋仁宗庆历五年,当时范仲淹呼吁改革,得罪了当时的封建大地主阶级的利益,在朝中树立了许多敌对势力,随着改革的失败,范仲淹被贬,当时欧阳修上书劝诫,备受牵连,被贬至滁州,在滁州做了两年知州,醉翁亭记就是在...

40岁生二胎的好处和坏处(40岁女性生二胎到底好不好)

40岁生二胎的好处和坏处(40岁女性生二胎到底好不好)

因为二胎政策开放的比较晚,导致想生二胎的人群变成了70后的女性,那是因为她们那一代人大部分都是有兄弟姐妹的,所以认为家里多点人气才会更加热闹,对于80、90后来说已经适应了独生子女的生活,而且生活成本的提高让他们不愿意生二孩。因此在医院看到产房里二孩的主力军大部分就是70后的中年女性。那40岁及40...

全球十大经济学家排名(举世公认的十大顶尖经济学大师)

全球十大经济学家排名(举世公认的十大顶尖经济学大师)

一、亚当·斯密(1723年—1790年) 经济地位:英国著名经济学家、哲学家、作家,经济学的主要创立者。亚当·斯密是现代资本主义经济制度的创立者,强调自由市场、自由贸易以及劳动分工,被誉为"古典经济学之父""现代经济学之父"。因代表作《国富论》而被认为是古典经济学的“开山鼻祖”,是世界上最为有名的...

贝尔米兹鬼脸事件是真的吗(匪夷所思的超自然现象之谜:贝尔米兹鬼脸之谜)

贝尔米兹鬼脸事件是真的吗(匪夷所思的超自然现象之谜:贝尔米兹鬼脸之谜)

贝尔米兹鬼脸之谜 西班牙有一座著名的“鬼屋”,座落在盛产橄榄油的马吉纳山中的贝尔米兹村里。30多年来,这个鬼屋不仅让那个偏远的山村居民困惑不解,也让成千上万的科学家和幽灵怀疑者颇感兴趣,他们纷纷到那里试图目击“贝尔米兹鬼脸”这一怪异现象。 老妇人玛丽亚·戈梅兹·加马拉就是在这座房子里出生的。1971...

我国谁最早发现甲骨文(谁是甲骨文的最早发现者)

我国谁最早发现甲骨文(谁是甲骨文的最早发现者)

甲骨文的发现是中国近代学术史上的一件大事,“在世界学术史上也值得大书特书”(李学勤语)。作为甲骨学史肇端的必备要素,甲骨文发现者成为诸多相关学术领域的关注对象。目前公认的甲骨文发现者为王懿荣。王宇信等所撰《甲骨学发展120年》一书认为,王懿荣“1899年第一个鉴定、购藏甲骨文,奠定了国际性学问甲骨...

李健个人资料及简历(广西监狱管理局局长李健通报被查)

李健个人资料及简历(广西监狱管理局局长李健通报被查)

4月3日,中央纪委国家监委网站援引广西壮族自治区纪委监委消息通报称:广西壮族自治区监狱管理局党委书记、局长李健涉嫌严重违纪违法,目前正接受自治区纪委监委纪律审查和监察调查。 官方简历显示,李健,男,汉族,1964年8月生,广西荔浦人,1986年7月参加工作,1996年6月加入中国共产党,西南政法学...