什么是語(yǔ)言的遞歸性 遞歸不是函數(shù)調(diào)用自己,而是調(diào)用函數(shù)的另一個(gè)復(fù)制品。你認(rèn)為呢?
遞歸不是函數(shù)調(diào)用自己,而是調(diào)用函數(shù)的另一個(gè)復(fù)制品。你認(rèn)為呢?你覺(jué)得什么都行。你沒(méi)瘋。你想得太多了。你只需要意識(shí)到這一點(diǎn)。別擔(dān)心那么多。你可以看出讀一百遍的意義。你現(xiàn)在讀得太少了。只是現(xiàn)在讀得太多了。C
遞歸不是函數(shù)調(diào)用自己,而是調(diào)用函數(shù)的另一個(gè)復(fù)制品。你認(rèn)為呢?
你覺(jué)得什么都行。你沒(méi)瘋。你想得太多了。你只需要意識(shí)到這一點(diǎn)。別擔(dān)心那么多。你可以看出讀一百遍的意義。你現(xiàn)在讀得太少了。只是現(xiàn)在讀得太多了。
C語(yǔ)言中的遞歸程序可以用非遞歸算法實(shí)現(xiàn)嗎?
是的,所有遞歸都可以用循環(huán)和堆棧等價(jià)重寫(xiě)。
C語(yǔ)言,循環(huán)語(yǔ)句為什么會(huì)比遞歸語(yǔ)句跑的快?
遞歸本質(zhì)上與操作中的循環(huán)相同。一個(gè)遞歸相當(dāng)于一個(gè)循環(huán),但遞歸是一個(gè)函數(shù)調(diào)用,與循環(huán)相比有很多開(kāi)銷:參數(shù)堆棧壓縮;當(dāng)前指令執(zhí)行指針PC跳轉(zhuǎn)導(dǎo)致CPU指令緩存失敗等,這些因素導(dǎo)致遞歸速度慢。C語(yǔ)言不支持尾部遞歸優(yōu)化。對(duì)于支持尾部遞歸優(yōu)化的語(yǔ)言,根據(jù)尾部遞歸的編寫(xiě)方法(對(duì)遞歸函數(shù)的調(diào)用是函數(shù)的最后一行),該語(yǔ)言將遞歸優(yōu)化為循環(huán)指令,因此兩者沒(méi)有區(qū)別。