【发布时间】:2012-01-01 06:38:00
【问题描述】:
我正在使用 Java: The Complete Reference 一书学习 Java。 目前我正在研究递归主题。
请注意:stackoverflow 上有类似的问题。我搜索了他们,但我没有找到我的问题的解决方案。我对以下程序中的逻辑感到困惑。
如果我运行下面的程序,它会产生正确的输出,但我不明白其中的逻辑。
- 我不明白下面这行的逻辑:result = fact(n-1) * n;
- 据我所知,如果我们传递 n=4 的值,如下面的程序所示,
- 然后,3 * 4 存储在结果中,即 12。
- 再次调用 fact(n-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