我正在使用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