【发布时间】:2016-05-08 08:11:28
【问题描述】:
所以,这是代码:
package rekurzija;
public class exkurzija {
public static void main(String[] args) {
myMethod(4);
}
static void myMethod( int counter)
{
if(counter == 0)
return;
else
{
System.out.println("hello" + counter);
myMethod(--counter);
System.out.println(""+counter);
return;
}
}
}
这是输出:
hello4
hello3
hello2
hello1
0
1
2
3
现在,我试图理解这一点,尝试用谷歌搜索这个问题,但没有用。我无法找到这是怎么回事。 所以更具体地说,我理解为什么会发生这种情况:
hello4
hello3
hello2
hello1
但我绝对不明白为什么会这样:
0
1
2
3
如果有人能解释为什么它最后会增加,以及为什么它不会继续减少,我将非常感激?
【问题讨论】:
-
为 myMethod(2) 手动追踪它,应该很清楚。
-
@JamesKPolk 我试过了,仍然 - 我不明白。能具体点吗?
-
嗯,首先减去计数器,然后然后输出数字...
-
宽泛地让我解释一下,这样您就可以确定发生了什么,但基本上第一个退出递归调用的是位于 0 的那个,然后另一个退出之后彼此...
-
这类疑问通常可以使用IDE(如eclipse)和断点来解决,这样你就可以逐步处理你的代码......