ハノイの塔
scr=source
aux= auciliary 補助
dst=destination
ここから本題、、、
var hanoi = function (disc, src, aux, dst){
if (disck>0){
hanoi(disc -1 , src, dst, aux); →ここが1行目
document.write ('move disc' + disc + 'from' + src + 'to' + dst ); →ここが2行目
hanoi (disc -1 , aux, src, dst); →ここが3行目
}
};
この処理のプロセスを追いかけてみる。
hanoi(3, 'SRC',' AUX',' DST');
まず1行目
hanoi(2, src, dst, aux);
hanoi(1, src, aux, dst);
hanoi(0, src, dst, aux);→disc = 0 だからここで終わり
move disc 1 from src to dst
hanoi(0, aux, src, dst);→disc = 0 だからここで終わり
move disc 2 from src to aux
hanoi(1, dst, src, aux);
hanoi(0, dst, aux, src);→disc = 0 だからここで終わり
move disc 1 from dst to aux
hanoi(0, src, dst, aux);→disc = 0 だからここで終わり
そして2行目
move disc 3 from src to dst
最後に3行目
hanoi(2, aux, src, dst);
hanoi(1, aux, dst, src);
hanoi(0, aux, src, dst);→disc = 0 だからここで終わり
move disc 1 from aux to src
hanoi(0, dst, aux, src);→disc = 0 だからここで終わり
move disc 2 from aux to dst
hanoi(1, src, aux, dst);
hanoi(0, src, dst, aux);
move disc 1 from src to dst
hanoi(0, aux, src, dst);