理解一个简单的递归方法

时间:2013-03-25 03:25:56

标签: java

我开始学习递归以及它如何用于解决问题。

问题是,该方法调用recur(4)显示什么?

public static void recur (int n)
{
  if(n==1)
  {
    System.out.print(n);
  }
  else
  {
    System.out.print(n);
    recur(n - 1);
  }
}

因为n不等于1,所以它转向重复(n - 1),但这是我对这里发生的事情感到困惑的地方?输出是否会是3,2,1,0?

1 个答案:

答案 0 :(得分:1)

将打印:4321

如果您致电recur(4),请在开始时致电n == 4。它不是1,所以它进入else块,它打印一个4,然后调用recur(3)(4-1 = 3)。在那之后,它仍然不是1,所以再一次你去了else块。这次n == 3,打印出3。然后调用recur(2),再次转到else块,打印出2并调用recur(1)。 n现在等于1,因此执行if块,只打印1。

请注意,如果您拥有4321语句而没有空格,则会获得System.out.print()println()每次都会把它放在一个新行上,你会得到:

4
3
2
1

但是使用print()语句且没有间距,您只需获得4321