0

int xを唯一の引数として取り、「*」をx回出力してから、「!」を出力する再帰メソッドを作成する必要があります。x回。通常、これは簡単ですが、x以外のループや変数を使用することはできません。

私が試したこと(編集):

public void xPrint(int x) {
    if (x == 0) return;
    System.out.print("*"); 
    xPrint(x-1);
    System.out.print("!"); 
    xPrint(x-1);
}

再帰を最初からやり直したいのですが、方法がわかりません。

編集2:問題は解決しました。再帰呼び出し回線の後の回線がまだ実行されることに気づかなかったので、それがスターを実行してから停止し、残りを実行するために再度再起動する必要があると思いました。私は最後の行を取り出さなければなりませんでした。

4

1 に答える 1

1

これを試して:

public void xPrint(int x) {
    if (x > 0) {
        System.out.print("*");
        xPrint(x-1);
        System.out.print("!");
    }
}

仕組みは次のとおりです。

  • の場合x > 0、1 つを出力し、1 単位*減分する再帰を呼び出します。x
  • の場合x <= 0は、立ち止まって戻り始める必要があることを意味します
  • 再帰が戻るたびに、 an!が出力されます
  • 戻る再帰呼び出しがなくなるまで、このように続けます。その時点で、メソッド呼び出しは終了します。

問題のコードはほぼ正しいことに注意してください。唯一のことは、最後の呼び出しxPrint(x-1);が不要であることです-削除すると機能します!

于 2013-02-25T18:43:49.603 に答える