1. 程式人生 > >javascript實現漢諾塔

javascript實現漢諾塔

漢諾塔是一道經典的遞迴程式設計的經典題

題目要求:

漢諾塔問題來自一個古老的傳說:在世界剛被建立的時候有一座鑽石寶塔(塔A),其上有64個金碟。所有碟子按從大到小的次序從塔底堆放至塔頂。緊挨著這座塔有另外兩個鑽石寶塔(塔B和塔C)。從世界創始之日起,婆羅門的牧師們就一直在試圖把塔A上的碟子移動到塔C上去,其間藉助於塔B的幫助。每次只能移動一個碟子,任何時候都不能把一個碟子放在比它小的碟子上面。當牧師們完成任務時,世界末日也就到了。

首先我們分析一下,我們把n個盤子分割為倆個部分,n-1個盤子,和第n個盤子,我們首先將n-1個盤子由A移動到B,再將第n個盤子移動到C,而後我們再將n-1個盤子由B移動到C,實現n-1的過程與n相同,以此類推下去,就會得到我們想要的結果;

// index為需要花費多少次
function hanoi (n,towerA,towerB,towerC) {
    index++;
    if (n == 1) {
        console.log(towerA + "to" + towerC);
    } else {
        hanoi(n - 1,towerA,towerC,towerB);
        console.log(towerA + "to" + towerC);
        hanoi(n - 1,towerB,towerA,towerC);
    }
}
var towerA = "A"
; var towerB = "B"; var towerC = "C"; var index = 0; hanoi(3,towerA,towerB,towerC); // 64次實現是太多了 我就以3為例子