首页 > 代码库 > 汉诺塔问题
汉诺塔问题
/** * 汉诺塔问题 * 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上. */ }
本文出自 “IT菜鸟” 博客,请务必保留此出处http://mazongfei.blog.51cto.com/3174958/1907836
汉诺塔问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。