遞歸結(jié)構(gòu)流程圖 JAVA中能夠?qū)崿F(xiàn)方法的遞歸調(diào)用嗎?如何實現(xiàn)?
JAVA中能夠?qū)崿F(xiàn)方法的遞歸調(diào)用嗎?如何實現(xiàn)?是的。所有的遞歸都可以通過循環(huán)來實現(xiàn)。遞歸可能導(dǎo)致堆棧溢出。在實際過程中,推薦使用循環(huán)。以二叉樹的前序遍歷為例:遞歸實現(xiàn)非遞歸實現(xiàn)遞歸到t=f(a,2-1
JAVA中能夠?qū)崿F(xiàn)方法的遞歸調(diào)用嗎?如何實現(xiàn)?
是的。所有的遞歸都可以通過循環(huán)來實現(xiàn)。遞歸可能導(dǎo)致堆棧溢出。在實際過程中,推薦使用循環(huán)。
以二叉樹的前序遍歷為例:
遞歸實現(xiàn)
非遞歸實現(xiàn)
遞歸到t=f(a,2-1),即t=f(a,1),它本身就是一個函數(shù)調(diào)用,即調(diào)用f(a,1),這個函數(shù)的執(zhí)行過程是執(zhí)行return a[0],即t=a[0],這是連貫的。T=f(a,2-1)本質(zhì)上是T=a[0],然后是執(zhí)行returnt>A[n-1]的時候了?T:a[n-1],n的值是2。然后一次將其向后推一層,并執(zhí)行語句returnt>A[n-1]?T:a[n-1]每次。也就是說,除了f(a,2-1)沒有被執(zhí)行外,程序每次都被執(zhí)行。最終結(jié)果應(yīng)該是9,這是數(shù)組的最大值