java遞歸 遞歸不是函數(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)在讀得太多了。遞
遞歸不是函數(shù)調(diào)用自己,而是調(diào)用函數(shù)的另一個(gè)復(fù)制品。你認(rèn)為呢?
你覺(jué)得什么都行。你沒(méi)瘋。你想得太多了。你只需要意識(shí)到這一點(diǎn)。別擔(dān)心那么多。你可以看出讀一百遍的意義。你現(xiàn)在讀得太少了。只是現(xiàn)在讀得太多了。
遞歸調(diào)用有什么好處一般什么情況下要遞歸?
遞歸的基本思想是“調(diào)用你自己”。使用遞歸的方法是直接或間接地調(diào)用自己。
其實(shí)遞歸方法體現(xiàn)了“類比”和“同步重復(fù)”的思想。它可以用簡(jiǎn)單的程序解決一些復(fù)雜的計(jì)算問(wèn)題,但計(jì)算量很大。還有一些數(shù)據(jù)結(jié)構(gòu),如二叉樹(shù),具有固有的遞歸特性;另外還有一種問(wèn)題,雖然沒(méi)有明顯的遞歸結(jié)構(gòu),但由于其普遍性,用遞歸程序編寫(xiě)程序比其它方法更容易,如八皇后問(wèn)題、河內(nèi)塔問(wèn)題等對(duì)于遞歸程序,我們應(yīng)該學(xué)會(huì)用遞歸來(lái)解決問(wèn)題。無(wú)論是直接遞歸還是間接遞歸,都需要在當(dāng)前層調(diào)用下一層時(shí)實(shí)現(xiàn)參數(shù)傳遞,獲取下一層返回的結(jié)果,并通過(guò)調(diào)用上一層返回當(dāng)前層的結(jié)果。對(duì)于各層調(diào)用的現(xiàn)場(chǎng)存儲(chǔ)和恢復(fù),由程序自動(dòng)實(shí)現(xiàn),無(wú)需人工干預(yù)。因此,在遞歸程序的設(shè)計(jì)中,關(guān)鍵是找出調(diào)用所需的參數(shù)、返回的結(jié)果以及遞歸調(diào)用結(jié)束的條件。例如在階乘函數(shù)fact(n)中,每層需要傳遞一個(gè)自然數(shù)n,返回n*fact(n-1),遞歸調(diào)用結(jié)束的條件為n=0,因此可以方便地編寫(xiě)相應(yīng)的程序