七層的漢諾塔遊戲最少需要127步。 其實演算法非常簡單,當盤子的個數為n時,移動的次數應等於2^n – 1。後來一位美國學者發現一種出人意料的簡單方法,只要輪流進行兩步操作就可以了。 首先把三根柱子按順序排成品字型,把所有的圓盤按從大到小的順序放在柱子A上,根據圓盤的數量確定柱子的排放順序:若n為偶數,按順時針方向依次擺放 A B C; 若n為奇數,按順時針方向依次擺放 A C B。 ⑴按順時針方向把圓盤1從現在的柱子移動到下一根柱子,即當n為偶數時,若圓盤1在柱子A,則把它移動到B;若圓盤1在柱子B,則把它移動到C;若圓盤1在柱子C,則把它移動到A。 ⑵接著,把另外兩根柱子上可以移動的圓盤移動到新的柱子上。即把非空柱子上的圓盤移動到空柱子上,當兩根柱子都非空時,移動較大的圓盤。這一步沒有明確規定移動哪個圓盤,你可能以為會有多種可能性,其實不然,可實施的行動是唯一的。 ⑶反覆進行⑴⑵操作,最後就能按規定完成漢諾塔的移動。 所以結果非常簡單,就是按照移動規則向一個方向移動金片:如3階漢諾塔的移動:A→C,A→B,C→B,A→C,B→A,B→C,A→C。漢諾塔問題也是程式設計中的經典遞迴問題。
七層的漢諾塔遊戲最少需要127步。 其實演算法非常簡單,當盤子的個數為n時,移動的次數應等於2^n – 1。後來一位美國學者發現一種出人意料的簡單方法,只要輪流進行兩步操作就可以了。 首先把三根柱子按順序排成品字型,把所有的圓盤按從大到小的順序放在柱子A上,根據圓盤的數量確定柱子的排放順序:若n為偶數,按順時針方向依次擺放 A B C; 若n為奇數,按順時針方向依次擺放 A C B。 ⑴按順時針方向把圓盤1從現在的柱子移動到下一根柱子,即當n為偶數時,若圓盤1在柱子A,則把它移動到B;若圓盤1在柱子B,則把它移動到C;若圓盤1在柱子C,則把它移動到A。 ⑵接著,把另外兩根柱子上可以移動的圓盤移動到新的柱子上。即把非空柱子上的圓盤移動到空柱子上,當兩根柱子都非空時,移動較大的圓盤。這一步沒有明確規定移動哪個圓盤,你可能以為會有多種可能性,其實不然,可實施的行動是唯一的。 ⑶反覆進行⑴⑵操作,最後就能按規定完成漢諾塔的移動。 所以結果非常簡單,就是按照移動規則向一個方向移動金片:如3階漢諾塔的移動:A→C,A→B,C→B,A→C,B→A,B→C,A→C。漢諾塔問題也是程式設計中的經典遞迴問題。