0
public static void solveTowers(int disks, int sourcePeg, int destinationPeg, int tempPeg)
{
    //always set the base case in any type of recursion programs
    if(disks == 1)
    {
        System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
        return;
    }

    //call the method itself
    solveTowers(disks - 1, sourcePeg, tempPeg, destinationPeg);

    System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);

    solveTowers(disks - 1, tempPeg, destinationPeg, sourcePeg);
}

私の質問は、最初の System.out ステートメントの下の「リターン」とは何ですか?

デバッグ時、最初のsolveTowersメソッドがディスク == 1 である基本ケースに到達した後、if ステートメントに入り、次に に到達した後return;、2 番目のSystem.outステートメントに進み、次にsecond solveTowersメソッドがreturn;続きます。 2番目ではfirst solveTowersなく?

4

4 に答える 4

4

returnステートメントは、到達すると関数またはメソッドの実行を終了します。

このメソッドの戻り値の型はvoidであるため、関数を終了するために値を返す必要はなく、次のように簡単に呼び出すことができます。return;

戻り値の型が異なる場合 (たとえば整数)、次のような整数を返す必要があります。return 1;

于 2013-01-22T10:55:25.680 に答える
4

これreturn;は、ディスクが 1 つしかない場合は何もする必要がないため、メソッドの実行を終了してそれを返すだけであるということです。これが必要なのは、メソッドが再帰を処理しており、ベース ケースを気にする必要があるためです。

また、メソッドの戻り値の型は void であるため、値を返す必要はありません。これだけreturn;

于 2013-01-22T10:55:38.397 に答える
1

ディスクが1つしかない場合は、実行を停止する必要があります。そのため、ソースと宛先を出力して終了します。

于 2013-01-22T10:56:30.310 に答える
1

return後続のコードを実行せずに現在のメソッドから戻る Java ステートメントです。

あなたの場合、コードは利用可能なディスクが1つしかないかどうかをチェックします。そうであれば、ソリューションを出力し、残りのメソッドの実行を防ぎます。

于 2013-01-22T10:55:17.617 に答える