Java 實例 - 漢諾塔算法

Java 實例 Java 實例

漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具。大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。

后來,這個傳說就演變?yōu)闈h諾塔游戲,玩法如下:

  • 1.有三根桿子A,B,C。A桿上有若干碟子
  • 2.每次移動一塊碟子,小的只能疊在大的上面
  • 3.把所有碟子從A桿全部移到C桿上

以下實例演示了漢諾塔算法的實現(xiàn):

/*
 author by w3cschool.cn
 MainClass.java
 */
public class MainClass {
   public static void main(String[] args) {
      int nDisks = 3;
      doTowers(nDisks, 'A', 'B', 'C');
   }
   public static void doTowers(int topN, char from,
   char inter, char to) {
      if (topN == 1){
         System.out.println("Disk 1 from "
         + from + " to " + to);
      }else {
         doTowers(topN - 1, from, to, inter);
         System.out.println("Disk "
         + topN + " from " + from + " to " + to);
         doTowers(topN - 1, inter, from, to);
      }
   }
}

以上代碼運行輸出結(jié)果為:

Disk 1 from A to C
Disk 2 from A to B
Disk 1 from C to B
Disk 3 from A to C
Disk 1 from B to A
Disk 2 from B to C
Disk 1 from A to C

Java 實例 Java 實例