我在网上找到了此递归示例,但我不了解其中发生了什么。
public class MysteryClass {
public static void mystery(int n) {
if (n > 0) {
mystery(n-1);
System.out.println(n * 4);
mystery(n-1);
}
}
public static void main(String[] args) {
MysteryClass.mystery(2);
}
}
输出是
4
8
4
我了解的是
System.out.println(n * 4);
步骤9中发生了什么?
我使用了调试器,但仍然不明白。
最佳答案
MysteryClass.mystery(2);
if (2 > 0) (true) ---> mystery(2-1);
| if(1 > 0) (true) ---> mystery (1-1); // Action (A)
| | if(0 > 0) (false) ---> // do nothing
| |
| System.out.println(1 * 4);
| mystery(1-1);
|
System.out.println(2 * 4);
mystery(2-1); ---> // repeat action (A)
关于java - 递归方法如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34001811/