汉诺塔算法

参考网络

汉诺塔问题描述:
假设有三个命名为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  
原文地址:https://www.cnblogs.com/wjw334/p/Tower-of-Hanoi.html