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

什么是递归?一文读懂

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

一.什么是递归?

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

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);

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

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

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

标签: 什么是递归

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

诺查丹玛斯预言2022年(著名预言家诺查丹玛斯预言了2022年欧洲战争)

诺查丹玛斯预言2022年(著名预言家诺查丹玛斯预言了2022年欧洲战争)

世界著名预言家诺查丹玛斯早在1555年就预测过俄乌战争吗?最近几年世界上发生了很多事情,比如在2020年出现的新冠疫情大流行至今依然没有结束。更加令人感到惊讶的是,有人发现法国占星家和预言家诺查丹玛斯(Nostradamus)在1555年的《百诗集》一书中曾预测了2022年欧洲将发生一场战争。那么这...

新生儿纸尿裤十大排行榜(分享婴儿尿不湿品牌排行榜前十名)

新生儿纸尿裤十大排行榜(分享婴儿尿不湿品牌排行榜前十名)

尿不湿是婴儿常用的日用品,是纸尿片、纸尿裤、拉拉裤的统称。干爽的尿不湿可以使婴儿保持整夜的安睡,由于吸水性强,被俗称为“尿不湿”。想了解婴儿尿不湿哪个牌子好,看尿不湿品牌排行榜前十名。 1、好奇(Huggies)婴儿尿不湿 推荐理由:超级好用的一款尿不湿,之前用了一阵,果断又买了这个牌子,薄薄的一片...

小ck属于什么档次(小ck属于什么档次)

小ck属于什么档次(小ck属于什么档次)

小CK产品的价格大致在400到600之间,而且性价比极高,走的是平民价位的中端品质。 小CK诞生于1996年的新加坡,主打亚洲市场,所以它的设计非常符合亚洲人的审美,受到现代年轻人的喜爱,也被定义为快时尚品牌。 520礼物送女友CHARLES&KEITH新品CK3-71280317简约...

e邮宝国际快递2022价格表(速卖通如何用e邮宝发货)

e邮宝国际快递2022价格表(速卖通如何用e邮宝发货)

速卖通是阿里旗下的一个跨境电商创业平台。对于跨境来说,物流服务显得尤为重要。为了应对国际间的物流往来,中国邮政结合国际电商的需要也开发了一种国际小包的快递运输方式,简称e邮宝。E邮宝主要运输的货物都是小型的、重量轻的和体积小的,价格相较于普通的EMS来说也有着大幅度的优惠。那么,下面我们就来跟大家分...

泰坦尼克号电影哪年上映的(泰坦尼克号是哪一年的电影)

泰坦尼克号电影哪年上映的(泰坦尼克号是哪一年的电影)

《泰坦尼克号》是1998年在中国内地上映的美国电影,这是一部以泰坦尼克号初次航行就因为撞到冰山而沉没的悲剧为背景的爱情片,在当时,泰坦尼克号是全世界最豪华的邮轮,它是由二十世纪初的海上霸主英国制造的,当时还因为268米的超级长度成了轮船界的巨无霸。可以想象,能登上这艘船的人必然非富即贵,但是我们的...

2022十大邮箱排行榜(Coremail:2022年第三季度企业邮箱安全报告)

2022十大邮箱排行榜(Coremail:2022年第三季度企业邮箱安全报告)

日前,CAC邮件安全大数据中心(以下简称CAC中心)发布《2022年第三季度企业邮箱安全报告》,对当前企业邮箱的应用状况和安全风险进行了分析。 1、垃圾邮件同比下降10.6% 根据CAC中心研究发现,全国企业邮箱用户在2022第三季度年共收发正常邮件6.46亿封,占比49.3%。 其中,来自境外...