欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

遞歸函數(shù)在內(nèi)存只有一份拷貝,但按這樣理解遞歸是錯(cuò)誤的.是嗎?

謝邀。簡(jiǎn)單說(shuō)說(shuō):

代碼僅一份

首先,遞歸函數(shù)的代碼在內(nèi)存中只需有一份,通常也只有一份。

其次,這樣的理解僅和編程語(yǔ)言的實(shí)現(xiàn)、及計(jì)算機(jī)體系結(jié)構(gòu)有關(guān),和遞歸無(wú)關(guān)。

數(shù)據(jù)有多份

以C為例,函數(shù)的實(shí)現(xiàn)代碼通常存放在TEXT段中,而該函數(shù)的每一次調(diào)用都會(huì)在堆棧段生成一套新的段框架(StackFrame),段框架中保存著本次調(diào)用的上下文、局部變量等信息,這一數(shù)據(jù)在函數(shù)返回時(shí)釋放。

若遞歸深度過(guò)大,堆棧空間不足以存放這許多次調(diào)用生成的數(shù)據(jù),就容易出現(xiàn)堆棧溢出故障。

小結(jié)一下:

遞歸調(diào)用時(shí):函數(shù)的代碼在內(nèi)存中只需一份;而函數(shù)運(yùn)行時(shí)的動(dòng)態(tài)數(shù)據(jù),可能有很多份。