現在、ダグラス・クロックフォードの本を読んでいますが、ハノイの塔の機能は少し頭に浮かびます。コンソールにログを記録しても、何が起こっているのか本当に理解できませんでした。これが私の追加機能です:
var hanoi = function (disc, src, aux, dst) {
console.log(disc);
console.log(src, dst);
if (disc > 0) {
hanoi(disc - 1, src, dst, aux);
console.log('Move disc ' + disc + ' from ' + src + ' to ' + dst);
hanoi(disc - 1, aux, src, dst);
}
}
hanoi(3, 'Src', 'Aux', 'Dst');
これにより、次のようになります。
3
Src Dst
2 Src
Aux
1
Src Dst 0SrcAux ディスク
1 をSrcから Dstに移動 0AuxDst ディスク2をSrcからAuxに移動 1DstAux 0DstSrc ディスク 1 をDstから Auxに移動 0SrcAux ディスク3をSrcから移動to Dst 2 Aux Dst 1 Aux Src 0AuxDst ディスク1をAuxから Srcに移動 0DstSrc ディスク2をAuxからDstに 移動 1SrcDst 0SrcAux ディスク 1 をSrcからDstに移動
0
Aux Dst
そして、私は早い段階で迷子になっています。結果の6行目で、SrcAuxからSrcDstに戻るにはどうすればよいですか?
そして、関数が「disc-1」を使用して自分自身を呼び出しているだけのときに、ディスクの数が0に達した後、どのようにしてディスクの数を増やすことができますか?