/** * 汉诺塔问题 * TODO 有A、B和C3根柱子,在A上从下往上按照从小到大的顺序放着64个圆盘 * 以B为中介,把盘子全部移动到C上。 * 移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子 */ public class HanniTower { public static void moveDish(int level,char from,char inter,char to){ //如果只有1个盘子,退出迭代 if (level == 1) { System.out.println("从 "+from+" 移动盘子 1号到"+to); }else { moveDish(level-1, from, to, inter); System.out.println("从 "+from+" 移动盘子到"+level+"号到"+to); moveDish(level-1, inter, from, to); } } public static void main(String[] args) { int disks = 5; moveDish(disks, 'A', 'B', 'C'); } /** * 实现原理解析: * 为了将N个盘子从A移动到C,需要先将第N个盘子上面的N-1个盘子移动到B上, * 这样才能将第N个盘子移动到C上. * 同理,为了将第N-1个盘子从B移动到C上,需要将N-2个盘子移动到A上,这样 * 才能将第N-1个盘子移动到C上. */ }
汉诺塔问题
原创
©著作权归作者所有:来自51CTO博客作者mazongfei的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:反转数组中元素的顺序
下一篇:比较两个相同的对象
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
函数递归经典题目——汉诺塔,青蛙跳台阶
递归常见例题——斐波那契、汉诺塔、青蛙跳台阶
递归 n的阶乘 i++