一,汉诺塔的问题。
所有的盘子刚开始都放在塔座A上,要求将所有的盘子从塔座A移动到塔座C上,每次只能移动一个盘子,任何盘子不能放在比自己小的盘子上。
二,移动子树。
三,递归的解决。
package ch07;
public class HanoiTower {
public static void main(String[] args) {
HanoiTower.doTower(3, 'A', 'B', 'C');
}
/**
* 移动盘子
* @param topN:移动盘子数
* @param from:起塔
* @param inter:中间塔
* @param 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);
}
}
}