递归和行执行

时间:2015-10-30 18:06:17

标签: java recursion

我理解递归是如何工作的,但在这种情况下会做什么打印?

void foo(int num) {
     if(num < 1) 
       return;
     foo(num - 1);
     System.out.println(num);
 }

假设我们让num = 5,然后不满足if条件,我们将5发送到foo(5-1),依此类推。我们何时执行打印线?

2 个答案:

答案 0 :(得分:1)

println的递归调用返回后执行foo行。一个递归调用的打印将不会打印,直到从一个级别的递归调用有机会打印其行并结束。

因为num < 1无法打印,所以要打印的第一个数字为1,然后是2,依此类推,直至原始num(例如5)被打印出来。如果原始num0或其为否定,则不会打印任何内容。

答案 1 :(得分:0)

当num达到0(即调用foo(0))时,递归结束,因此在foo(0)返回后,将打印1。然后foo(1)返回,打印2,依此类推。