遞歸的返回怎么理解 遞歸的返回值是怎么回事?
遞歸的返回值是怎么回事?要理解遞歸,我們首先需要了解函數(shù)的嵌套調(diào)用,也就是說(shuō),要了解當(dāng)一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí)系統(tǒng)會(huì)做什么。具體來(lái)說(shuō),就是運(yùn)行堆棧的機(jī)制。P->left=addtree(P->
遞歸的返回值是怎么回事?
要理解遞歸,我們首先需要了解函數(shù)的嵌套調(diào)用,也就是說(shuō),要了解當(dāng)一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí)系統(tǒng)會(huì)做什么。具體來(lái)說(shuō),就是運(yùn)行堆棧的機(jī)制。P->left=addtree(P->left,w)//遞歸后,返回值如何返回到P->left?語(yǔ)句“addtree(P->left,w)”返回二叉樹(shù)中新節(jié)點(diǎn)的指針。在本例中,單詞“小于”父節(jié)點(diǎn)單詞,因此它掛在父節(jié)點(diǎn)的左子樹(shù)上。Treeprint是一個(gè)二叉樹(shù)遍歷函數(shù)。實(shí)際上,我們要理解函數(shù)的嵌套調(diào)用
不可能有返回值,返回值只是函數(shù)輸出的一個(gè)方法
本質(zhì)上沒(méi)有區(qū)別,如果非要說(shuō)有區(qū)別的話,因?yàn)檫f歸是以消耗具有相同遞歸深度的堆??臻g為代價(jià)的。如果有返回值,堆??臻g將被消耗更多例如,如果返回值是100級(jí)遞歸中的32位整數(shù),那么將消耗3200位的堆棧空間(請(qǐng)注意,堆??臻g消耗太多,而不是內(nèi)存)。代碼堆棧空間非常寶貴)