【发布时间】:2020-07-27 11:39:47
【问题描述】:
我是 Java 编程新手,我们的老师教给我们递归的概念,我发现它有点复杂。我只知道它像循环一样工作(如 4 的阶乘),但我仍然不太明白为什么它会这样工作。我能得到关于这个话题的详细解释吗?这是我老师用来解释的一段代码和一张图片。
package javaapplication1;
public class JavaApplication1 {
static int factorial(int n){
int t;
if(n == 0){
return 1;
} else {
t = factorial(n - 1);
return n * t;
}
}
public static void main(String[] args) {
System.out.println(factorial(5));
}
}
在下图中,蓝色代表堆栈卷绕,绿色代表堆栈展开,我也不知道什么是堆栈卷绕和展开。
【问题讨论】:
-
递归 - 一个(最终)再次调用自身的函数调用。 Winding = 再次调用自身,unwinding = 从之前的递归调用返回。
-
在 Eclipse 等 IDE 中调试该程序,您可以按照详细流程进行操作。
-
Understanding recursion 的可能副本,尽管第一个答案开头有点幽默,但确实有一些实际内容。