webかたつむり ウェブデザインを勉強中 ウェブ初心者のおぼえがき

webかたつむり

ウェブデザインを勉強中

javascript 再帰関数 / ハノイの塔

ハノイの塔

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);