漢諾塔問題的描述是:設有三根標號爲A,B,C的柱子上,在A柱上放着n個盤子,每個都比下面的略小一點,要求把A柱上的盤子所有移動到C柱上,規則是:一次只能移動一個盤子;移動的過程當中大盤只能放在小盤下面;在移動過程當中盤子能夠放在A,B,C的任意一個柱子上。spa
遞歸方法求解:一個盤子的漢諾塔問題可直接移動(遞歸出口)。n個盤子的漢諾塔問題可遞歸表示爲以下的子問題求解的形式,首先把上邊的n-1個盤子從A柱移動到B柱,而後把最下邊的一個盤子從A柱移動到C柱,最後把移到B柱的n-1個盤子再移到C柱。code
以下圖所示,n個盤子從上到下標號爲1,2,3,4,……,nblog
1 package tower; 2 3 public class Tower { 4 public static void moveDish(int n, char from, char temp, char to) { 5 if (n == 1) { 6 System.out.println( "1 號 : " +"from " +from +" to "+ to); 7 } else { 8 moveDish(n - 1, from, to, temp); 9 System.out.println(n + " 號 : "+ "from " + from + " to " + to); 10 moveDish(n - 1, temp, from, to); 11 } 12 } 13 14 public static void main(String []args){ 15 moveDish(3, 'A', 'B', 'C'); 16 } 17 }