ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの再帰関数で「ハノイの塔」を実装

JavaScriptの再帰関数で「ハノイの塔」を実装

不言
不言オリジナル
2018-07-05 17:07:302072ブラウズ

この記事では、主に「ハノイの塔」を実装するための JavaScript 再帰関数を紹介します。これを必要とする友人は参考にしてください。「ハノイの塔」は有名なパズル ゲームです。塔には 3 本の柱と、直径の異なる一組の中空円盤があります。最初に、列上のすべてのディスクが小さいものから大きいものへと順番に積み重ねられます。目的は、一度に 1 つのディスクを別の列に移動することによって、ディスクの山をターゲットの列に移動することです。このプロセスでは、大きなディスクを小さなディスクに配置することはできません。

この部分を注意深く解釈してください。ディスクが 10 枚以上ある場合、ステップ数は間違いなく衝撃的になりますが、目的は、大量のディスクをターゲットの柱に移動することです。上記の 9 枚のディスクを 1 つとして考えてください。まず 9 枚の円盤を別の柱に移動し、次に上の 8 枚の円盤を 1 つのセットとして、9 番目の円盤を別のセットとして考えます。 ...そして類推により、分解して移動します。再帰関数の考え方が反映されています。

コードを完成させます。非常に簡単な書き方です。もっと簡単な書き方はないでしょうか?

var hanoi = function {disc, begin, end, helper) {    if (disc > 0) {
        hanoi(disc - 1, begin, helper, end);
        document.writeln('移动圆盘 ' + disc + ' 从 ' + begin + ' 到 ' + helper);
        hanoi(disc - 1, end, begin, helper);
    }
};

hanoi(3, '柱子一', '柱子二', '柱子三');

ディスクの数が 3 の場合の出力:

1 番柱から 3 番柱に 1 を移動

1 番柱から 2 番柱に 2 を移動

1 を 3 番柱から 2 番柱に移動
3 を柱から移動one ピラー 3 へ
移動 1 ピラー 2 からピラー 1 へ
移動 2 ピラー 2 からピラー 3 へ
移動 1 ピラー 1 からピラー 3 へ

hanoi 関数に渡されるパラメータには、現在移動されているディスク番号と移動されたディスク番号が含まれます。 3本の柱を使います。シニアを呼び出すと、現在処理中のディスクより上のディスクを処理します。最終的には、存在しないディスク番号で呼び出されることになります。そのような場合は何もしません。この関数は不正な値を無視するため、無限ループが発生する心配はありません。

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

純粋な JS コードを使用して文字列に含まれる漢字の数を確認する方法


JavaScript を使用して画像に基づいてバーコードを取得する方法

以上がJavaScriptの再帰関数で「ハノイの塔」を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。