-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 に答える