参考网络
汉诺塔问题描述:
假设有三个命名为X(TOWER 1),Y(TOWER 2),Z(TOWER 3)的塔座,在塔座X上有n个直径大小各不相同,依次从小到大编号为1,2,3,...,n的圆盘。现要求将X塔座上的n个圆盘移到Z塔座上并按同样顺序叠排,
圆盘移动时必须遵循下列规则:
1)每次只能移动一个圆盘;
2)圆盘可以插在X,Y,Z中的任意塔座上;
3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。
1 public class TestHanot { 2 3 4 public static void main(String[] args) { 5 TestHanot test = new TestHanot(); 6 test.HanotFun(3, "X", "Y", "Z"); 7 } 8 9 /*** 10 * 汉诺塔 11 * @param n 移动盘标号 12 * @param x 起始柱子 13 * @param y 辅助柱子 14 * @param z 目标柱子 15 */ 16 public void HanotFun(int n,String x,String y,String z) { 17 if(n==1){ 18 System.out.println(n+":"+x+"-->"+z); 19 return; 20 } 21 22 HanotFun(n-1,x,z,y); 23 System.out.println(n+":"+x+"-->"+z); 24 HanotFun(n-1,y,x,z); 25 26 } 27 28 } 29 30