我试图了解此递归代码的工作原理,但在互联网上找不到类似的东西。
public void doSomething(int n)
{
if (n > 0)
{
doSomething(n-1);
System.out.println(n);
doSomething(n-1);
}
}
Why is the output 1213121?
答案 0 :(得分:0)
这很简单。
您致电doSomething(3)
-> doSomething(2)
-> doSomething(1)
-> doSomething(0)
->不满足条件,因此您return
-> {{1} }-> println(1)
->条件不满足,所以您doSomething(0)
。
现在,您位于函数return
的末尾。 doSomething(1)
被调用。
您会像以前一样致电println(2)
。
从doSomething(1)
返回时,doSomething(2)
被称为...