递归函数在内存只有一份拷贝,但按这样理解递归是错误的。是吗

更新时间:02-09 教程 由 青果 分享

谢邀。简单说说:

代码仅一份

首先,递归函数的代码在内存中只需有一份,通常也只有一份。

其次,这样的理解仅和编程语言的实现、及计算机体系结构有关,和递归无关。

数据有多份

以C为例,函数的实现代码通常存放在TEXT段中,而该函数的每一次调用都会在堆栈段生成一套新的段框架(StackFrame),段框架中保存着本次调用的上下文、局部变量等信息,这一数据在函数返回时释放。

若递归深度过大,堆栈空间不足以存放这许多次调用生成的数据,就容易出现堆栈溢出故障。

小结一下:

递归调用时:函数的代码在内存中只需一份;而函数运行时的动态数据,可能有很多份。

声明:关于《递归函数在内存只有一份拷贝,但按这样理解递归是错误的。是吗》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2166306.html