您的位置:首页 > 其它

递归高级应用

2015-11-16 00:17 197 查看
一,汉诺塔的问题。

所有的盘子刚开始都放在塔座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);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: