JS は再帰を使用してハノイの塔を完成させるための手順を実装しています。多くの学生がそれを実行できると思います。
私は暇なときにハノイの塔のゲームを書きました。これにはリマインダー機能があります。ユーザーがリマインダーをクリックすると、プログラムは再帰を使用して完了ステップを実装し、ページ要素を操作してそれに応じてそれを実装します。このステップへ。
部分コードは次のとおりです:
すべて問題ありません。問題は、これが新しいレベルのみであることです。ユーザーがディスクを移動していない場合、ステップ リストが生成されます。ユーザーがディスクを移動した場合 (たとえば、「ディスクが 3 枚あります」)最初のシリンダー、2 番目のシリンダーに 2 つのディスク、そして 3 番目のシリンダーに 1 つのディスク。ユーザーは困惑し、次に何をすればよいかわかりません。この時点で、リマインダーをクリックします。に基づいて後続のステップ アルゴリズムを生成する方法現在の状況?
恥ずかしながらこのゲームは半年前に書いたもので、今のところリマインダー機能も未完成で全く分かりません。
これについては、フィボナッチ数列を見てください。ハノイの塔はフィボナッチ アルゴリズムです。
そのようなリマインダー機能が必要な場合は、現在のものよりも少し複雑になり、ステータスを記録する必要があります。
リーリーたとえば、あなたの例では 6 つのディスクがあり、最初の柱には 3 つのディスクがあります。これは 456 である場合もあれば、135 である場合もあります。現在のステータスを明確にしてから、手順を完了してから分解する必要があります。上から下まで。