我理解递归是如何工作的,但在这种情况下会做什么打印?
void foo(int num) {
if(num < 1)
return;
foo(num - 1);
System.out.println(num);
}
假设我们让num = 5,然后不满足if条件,我们将5发送到foo(5-1),依此类推。我们何时执行打印线?
答案 0 :(得分:1)
在println
的递归调用返回后执行foo
行。一个递归调用的打印将不会打印,直到从一个级别的递归调用有机会打印其行并结束。
因为num < 1
无法打印,所以要打印的第一个数字为1
,然后是2
,依此类推,直至原始num
(例如5
)被打印出来。如果原始num
为0
或其为否定,则不会打印任何内容。
答案 1 :(得分:0)
当num达到0(即调用foo(0)
)时,递归结束,因此在foo(0)
返回后,将打印1。然后foo(1)
返回,打印2,依此类推。