1、题目
2、总结的规律
- 将起始柱上的 n-1 个圆盘移动到辅助柱上;
- 将起始柱上遗留的 1 个圆盘移动到目标柱上;
- 将辅助柱上的所有圆盘移动到目标柱上。
3、代码实现
package test; public class Test { //汉诺塔 public static void main(String[] args) { Tower t1=new Tower(); t1.move(5, 'A', 'B', 'C'); } } class Tower{ //num代表塔的层数,a,b,c分别代表塔A,塔B,塔C public void move(int num,char a,char b,char c) { if(num==1) { System.out.println(a+"->"+c); } else { /* * 1、把最底层塔块和上面所有塔块看作两个整体 * 所以上面所有层应该用num-1表示,现在应该把上面的塔块通过塔C移动到塔B * */ move(num-1,a,c,b); //然后把在最底下那个塔块放到塔C System.out.println(a+"->"+c); //然后应该把塔B所有塔通过塔A移动到塔C move(num-1,b,a,c); } } }
4、运行结果
汉诺塔好难啊~规律是网上找的,但是我自己都搞不懂里面递归的具体情况~害
当然,也可以通过内存分析法推算过程