【发布时间】:2012-11-30 17:56:54
【问题描述】:
递归函数和内存堆栈之间是否存在直接关系,更多解释请考虑代码:
public static int triangle(int n) {
System.out.println(“Entering: n = ” + n);
if (n == 1) {
System.out.println(“Returning 1”);
return 1;
} else {
int temp = n + triangle(n - 1);
System.out.println(“Returning“ + temp);
return temp;
}
}
在此示例中,值 2、3、4、5 将存储在哪里,直到函数返回?请注意,它们将在 LIFO(LastInFirstOut) 中返回,这些是处理内存堆栈的递归的特殊情况,还是它们总是一起出现?
【问题讨论】:
-
如果您指的是调用堆栈,那么每次调用都会在调用堆栈上创建一个条目,并且每次返回都会删除该条目。
-
你从哪里得到那些在 Java 中实际上不起作用的花哨的引语?
-
如您所见,
n==1是特例,不会递归。