当前位置:首页 > 文化 > 正文内容

递归调用(递归调用容易造成堆栈溢出)

2022-09-16 13:06:05文化559

大家好,今天就和小鸥一起来看看这个问题吧 。递归调用容易造成堆栈溢出,递归调用很多人还不知道,现在让我们一起来看看吧!

1、 递归的基本原理。

递归调用(递归调用容易造成堆栈溢出)

2、 为了详细解释递归的用法,我们先来看一个例子。

3、 程序中的main()函数调用up_and_down()函数,可以称为第一级递归,然后up_and_down()函数调用自己,称为第二级递归,第二级递归递归调用,第三级递归,以此类推。为了深入程序的调用过程,在print语句中显示了变量n的值及其内存地址n,printf()函数使用%p格式显示变量的地址。

4、 递归的具体工作过程。

5、 首先main()函数用参数1调用函数up_and_down(),所以up_and_down()中形参的值是1,所以print语句#1输出level 1。因为n的值小于4,所以在up_and_down()中(这是第一级递归),用参数n ^ 1调用up_and_down(),即取值2(这是第二级递归)。在第二级调用中,n的值被赋给2,因此print语句#1的输出是第二级。类似地,下面对语句#1的两个调用分别打印第3级和第4级。

6、 当第四级呼叫开始时,n的值是4。因此,不满足if语句的条件。此时不再调用up_and_down()函数,然后执行打印语句#2,即输出LEVEL 4。下面的函数执行return语句。此时第四级递归调用结束,控制权返回给该函数的调用函数,即第三级调用函数。第三级调用中之前执行的语句是if语句中的第四个调用,所以它继续执行其后续代码,执行print语句#2并输出LEVEL 3。三级调用结束,二级调用函数继续执行后续代码,输出二级,以此类推。

7、 注意每次递归调用函数都会生成它的局部变量,看变量的地址就知道了。不同的系统可能得到不同的地址值,但是在同一级递归中,调用函数时的变量地址和返回最后一个函数时的变量地址是一样的。

8、 递归的基本要点。

9、 首先,每一级函数调用都有自己的变量。在示例中,第一级调用N不同于第二级调用N,因此程序创建了四个独立的局部变量,都命名为N,但每个变量的值不同。每个变量的有效范围只是它所在的函数,这个调用后变量也被清除,和普通的函数调用一样。

10、 第二,每个函数调用都会返回一次。当程序流执行到某一级递归结束时,会返回上一级继续执行。程序不能在main()函数中直接返回初始调用,而是通过每一级递归逐步返回。

11、 第三,在递归函数中递归调用语句之前的语句,在递归的各个层次中,与被调用的函数具有相同的执行顺序。例如,在前面的例子中,print语句#1在语句递归调用之前,它按照递归调用的顺序执行了四次,即第1级、第2级、第3级和第4级。

12、 第四,递归函数必须包含可以终止的语句递归调用。通常,递归函数可以使用if语句或其他类似语句在函数参数达到某个值时结束递归调用。例如,在前面的示例中,up_and_down(n)函数使用n-1作为实际参数来调用自己。当实际参数达到4时,条件语句if(n4)不满足,递归结束。

这篇文章到此就结束,希望能帮助到大家。

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

版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!

本文链接:https://www.xixia168.com/n/wh/134499.html

标签: 递归堆栈
分享给朋友:

“递归调用(递归调用容易造成堆栈溢出)” 的相关文章

关于广东专业技术人员继续教育信息管理系统的介绍(广东专业技术人员继续教育信息管理系统)

关于广东专业技术人员继续教育信息管理系统的介绍(广东专业技术人员继续教育信息管理系统)

大家好,小编猫猫来为大家解答这个问题。广东专业技术人员继续教育信息管理系统,关于广东专业技术人员继续教育信息管理系统的介绍很多人还不知道,现在让我们一起来看看吧!1、ee专业技术人员远程教育网是助力计划·广东教育实施机构,由广东省人力资源和社会保障厅审核备案并授牌确认,依托国内顶尖的远程教育公共服务...

关于魔塔大陆ova的描述(魔塔大陆ova)

关于魔塔大陆ova的描述(魔塔大陆ova)

今天来聊聊关于魔塔大陆ova,关于魔塔大陆ova的描述的文章,现在就为大家来简单介绍下魔塔大陆ova,关于魔塔大陆ova的描述,希望对各位小伙伴们有所帮助。1、魔塔大陆Ar-Tonelico是日本的DVDRip。2、故事发生在被称为\\整个Soul Shell就是一个完全封闭的空间,没有天空也没有海...

孟古(孟古青真实结局)

孟古(孟古青真实结局)

大家好,小活来为大家解答以上的问题。孟古青真实结局,孟古这个很多人还不知道,现在让我们一起来看看吧!1、孟古在福陵陪葬努尔哈赤的众我后妃中,声名最为显赫的莫过于叶赫纳拉·孟古,她生前是努尔哈赤的第三位大妃(相当于皇后),死后又因其所生的惟一一个儿子皇太极荣登汗位并成为清朝第一帝的缘故,孟古就以初谥为...

关于瑞雪兆丰年的前一句的介绍(瑞雪兆丰年的前一句)

关于瑞雪兆丰年的前一句的介绍(瑞雪兆丰年的前一句)

大家好,小编毛毛来为大家解答这个问题。瑞雪兆丰年的前一句,关于瑞雪兆丰年的前一句的介绍很多人还不知道,现在让我们一起来看看吧!1、春雨贵如油,释义:春天的细雨像油一样可贵,形容春雨宝贵难得。2、出自宋·释道原《景德传灯录》、明·解缙《春雨》。这篇文章到此就结束,希望能帮助到大家。...

关于外来媳妇本地郎2014的介绍(外来媳妇本地郎2014)

关于外来媳妇本地郎2014的介绍(外来媳妇本地郎2014)

大家好,小编小白来为大家解答这个问题。外来媳妇本地郎2014,关于外来媳妇本地郎2014的介绍很多人还不知道,现在让我们一起来看看吧!1、《外来媳妇本地郎(1443—1693)》是中国内地2015年上映的喜剧影片。2、该剧拍摄持续19年,3100多集,目前还没更新完。这篇文章到此就结束,希望能帮助到...

关于纪庆玉的介绍(纪庆玉)

关于纪庆玉的介绍(纪庆玉)

大家好,小编丹尼来为大家解答这个问题。纪庆玉,关于纪庆玉的介绍很多人还不知道,现在让我们一起来看看吧!1、纪庆玉、男、山东东营、东城沙营村人。2、2012年12月10日为免遭强拆之难,老人扛着国旗自家周围巡逻。这篇文章到此就结束,希望能帮助到大家。...