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

什么是递归?一文读懂

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

一.什么是递归?

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

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

标签: 什么是递归

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

三国演义十大绝命兵器排行榜(《三国》十大绝命兵器排行)

三国演义十大绝命兵器排行榜(《三国》十大绝命兵器排行)

三国时代人才辈出,使用的武器也是特征各异,神勇无比,杀伤力惊人。下面,我们来看下三国中的十大绝命兵器。 第十名:赵云—青釭剑 曹操有宝剑二口:一名“倚天”;一名“青釭”。倚天剑自佩之,青釭剑令夏侯恩佩之。 赵子龙单骑救主:(赵云)正走之间,夏侯恩背着一口剑,引十数骑跃马而来。赵云二话不说,交马只...

电脑如何调整屏幕亮度(电脑屏幕亮度的调节步骤)

电脑如何调整屏幕亮度(电脑屏幕亮度的调节步骤)

本次记录的是关于“电脑屏幕亮度怎么调节”的笔记。 我们使用电脑的时候,有一个非常关乎感官的就是电脑的屏幕亮度啦,因为电脑的屏幕亮度和手机不一样,它不能自己动态调整,需要我们手动的设置。 在不同的环境中使用不同的电脑屏幕亮度有助于我们保护眼睛和增加更好的观影体验,那么我们该怎么设置呢? 电脑屏幕亮度调...

东普鲁士现在属于哪国(德国的“龙兴之地”:东普鲁士)

东普鲁士现在属于哪国(德国的“龙兴之地”:东普鲁士)

翻开欧洲地图,我们发现在波罗的海南岸有一块飞地,名为“加里宁格勒”,属于俄罗斯联邦。它的面积为1.5万平方公里,人口近百万,其中俄罗斯族占据了其中的78%,白罗斯族占据其中8.5%,乌克兰族占据其中7.2%,几乎没有德意志民族的影子。加里宁格勒由于一颗钉在欧洲的钉子,威慑着整个西欧地区。然而,在70...

意大利的首都是哪个城市(意大利首都“罗马”是世界文化的发源地之一)

意大利的首都是哪个城市(意大利首都“罗马”是世界文化的发源地之一)

意大利首都罗马是世界文化的发源地之一,沉淀了数千年历史遗迹,有着丰富的文化遗产。它建在台泊河之间的7座山冈上,几经毁灭又几度复兴。古罗马遗迹规模宏大,令人浮想联翩,流连忘返。罗马被誉为“万城之城”,因为他有着辉煌的历史,罗马帝国的荣耀,天主教廷的至高无上都构成了罗马近2500年的辉煌。 意大利的...

亚洲大学排名榜名单(最新)

亚洲大学排名榜名单(最新)

6月1日,泰晤士高等教育(Times Higher Education, 简称 THE)发布了最新泰晤士高等教育亚洲大学排名,此排名公布了2022年亚洲表现最好的大学。该榜单包括来自31个国家和地区的 616 所大学,相比去年的551所增加了11.8%。 排名方法 泰晤士高等教育世界大学排名是全球...

内蒙古十大著名景点(内蒙古旅游必去十大景点)

内蒙古十大著名景点(内蒙古旅游必去十大景点)

放个假,去一个有山有水的地方走走。而内蒙古,就是一个不错的选择。 内蒙古旅游景点大全景点排名_内蒙古旅游十大圣地 1、额济纳胡杨林☆☆☆☆☆ 在胡杨是生长在沙漠的唯一乔木树种,且十分珍贵,可以和有“植物活化石”之称的银杏树相媲美。具有“千年不死”“死后千年不倒”“倒后千年不朽”的活化石之称; 2...