(Hanoi)漢諾塔java實現程式
阿新 • • 發佈:2019-02-11
漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
java實現程式碼如下:
import javax.swing.JOptionPane; public class HanoiTemple { /** * @param args */ public static void main(String[] args) { String n=JOptionPane.showInputDialog("請輸入要移到的盤數:"); HanoiTemple ht=new HanoiTemple(); ht.move(Integer.parseInt(n),'A','B','C'); } public void move(int n,char a,char b,char c){ if(n==1){ System.out.println("move from "+a+" to "+c); }else{ move(n-1, a,c,b); move(1, a, b, c); move(n-1, b, a, c); } } }
程式用到了遞迴的思想。當只有1個盤時,只需直接從A移到C即可。
當有2個盤時,過程如下:A>>B A>>C B>>C
總結規律,當n>=2時,
先將上面的 n-1 個盤由 A 藉助 C 移到 B
然後最底下的一個大盤由 A 藉助 B 移到 C (實際上就是直接從 A 移到 C)
最後將 B 上的 n-1 個盤由 B藉助 A 移到 C