-2

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

问题是,方法调用 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,所以它求助于 recur(n - 1) 但这就是我对这里发生的事情感到困惑的地方?输出是否会类似于 3、2、1、0?

4

1 回答 1

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()声明,没有空格。Aprintln()每次都会把它放在一个新的行上,你会得到:

4
3
2
1

但是有一个print()声明并且没有空格,你会得到4321

于 2013-03-25T03:30:53.840 回答