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

什么是递归?一文读懂

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

一.什么是递归?

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

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

标签: 什么是递归

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

冯云山被称为什么王(冯云山被称为什么王)

冯云山被称为什么王(冯云山被称为什么王)

了解太平天国史事的读者都知道,太平天国应该是封王最多的一个王朝了,仅仅十四年的国史,竟分封王爵多达2700多个,即使到了现在有名有姓可考的也有200多个。王之下设有义、安、福、燕、豫、侯六等爵,而六等爵之下的丞相,更是数也数不过来 ,据说一支一百多号人的小队伍里都有好几位侯爵、丞相。 此外,还有无数...

李亚鹏王菲离婚原因(资深财经记者曝王菲李亚鹏离婚原因:两人三观不同)

李亚鹏王菲离婚原因(资深财经记者曝王菲李亚鹏离婚原因:两人三观不同)

8月30日,有娱记采访了资深财经记者,受访中这位财经记者不仅曝出李亚鹏的真实财务状况,还曝出王菲和李亚鹏离婚的原因。 资深财经记者在受访中谈到了李亚鹏和王菲离婚的原因。 财经记者表示,据他所知,李亚鹏和王菲离婚,是王菲先提出来的,两人在三观、兴趣、爱好等等方面完全不同,生活中的两人完全就是两个世...

女子400米自由泳世界纪录(女子400米自由泳世界纪录)

女子400米自由泳世界纪录(女子400米自由泳世界纪录)

女子400米自由泳世界纪录为3分58秒37。 女子400米自由泳世界纪录是由美国选手凯蒂·莱德斯基于2014年在澳大利亚的黄金海岸举办的泛太平洋游泳锦标赛上创造的。在这届泛太平洋游泳锦标赛上,莱德斯基除独揽5金(200米自由泳、400米自由泳、800米自由泳、1500米自由泳、4×200米自由泳接...

2022滑冰鞋十大品牌排行榜(轮滑鞋哪个牌子好)

2022滑冰鞋十大品牌排行榜(轮滑鞋哪个牌子好)

轮滑鞋有哪些牌子?轮滑鞋什么牌子好?什么牌子的轮滑鞋质量比较好?下面,品牌网小编就来为大家盘点那些口碑比较好、比较受欢迎的轮滑鞋品牌排行。 1、动感ACTION轮滑鞋(珠三角大型企业,专业设计生产滑冰鞋系列运动产品的企业,轮滑鞋十大品牌,佛山市森海运动用品有限公司) 轮滑鞋ACTION动感轮滑...

女作家排行榜100名(盘点:十大网络小说女作家)

女作家排行榜100名(盘点:十大网络小说女作家)

在网络文学界,除了有众多著名的男作家,如唐家三少、烽火戏诸侯和月关等人,还活跃着众多网络小说女作家。而且在笔者看来,网络文学的发展机遇都是平等的,网络小说女作家同样有着不输于男作家的实力。今天,笔者根据自己多年来阅读的网络小说女作家的作品情况及阅读体验,就为大家排出十大网络小说女作家排行榜,为大家仔...