我正在使用Java:The Complete Reference這本書學習Java。 目前我正在研究主題遞歸。在Java中使用遞歸的因子
請注意:在stackoverflow上也有類似的問題。我搜查了他們,但我沒有找到解決我的問題。我對以下程序中的邏輯感到困惑。
如果我運行下面的程序,它會產生正確的輸出,但我不理解邏輯。
- 我不明白以下行中的邏輯:result = fact(n-1)* n;
- 從我所知,如果我們通過n值= 4如圖中下面程序,
- 然後,將3×4被存儲在結果即12
- 再次,事實(正1)被調用。然後n變成3.
- 然後2 * 3被存儲在結果中,替換前面的12。
我想你明白我在哪裏困住/困惑。
謝謝。
class Calculation { int fact(int n) { int result; if(n==1) return 1; result = fact(n-1) * n; return result; } } public class Factorial { public static void main(String args[]) { Calculation obj_one = new Calculation(); int a = obj_one.fact(4); System.out.println("The factorial of the number is : " + a); } }
我的建議是在深入研究Java之前,首先需要了解遞歸背後的數學。如果你還沒有這樣做,這對你來說將是一個非常好的開始en.wikipedia.org/wiki/Recursion – GETah
希望這可以讓你更清楚http://www.programmerinterview.com/index。PHP /遞歸/遞歸解釋/ – Rangesh