研磨数据结构与算法-07递归之高级应用

汉诺塔的问题解决:

 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

public class HanoiTower {

/**

* 移动盘子

* topN:移动的盘子数

* from:起始塔座

* inter:中间塔座

* to:目标塔座

*/

public static void doTower(int topN,char from,char inter,char to) {

if(topN == 1) {

System.out.println("盘子1,从"+ from + "塔座到" + to + "塔座");

} else {

doTower(topN - 1, from, to, inter);

System.out.println("盘子" + topN +",从" + from + "塔座到" + to + "塔座" );

doTower(topN - 1, inter, from, to);

}

}

}

测试:

public class TestHanoiTower {

public static void main(String[] args) {

HanoiTower.doTower(5, 'A', 'B', 'C');

}

}




你可能感兴趣的:(java,算法)