问题描述:
据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小 至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的 原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。
简单汉诺塔的迭代实现:
public class HanioTowerTest { public static void moveDish(int level, char from, char assistant, char to){ if(level == 1){ System.out.println("从" + from + "移动1号到" + to); }else{ moveDish(level - 1, from, to, assistant); System.out.println("从" + from + "移动" + level + "号到" + to); moveDish(level - 1, assistant, from, to); } } public static void main(String[] args){ final int LEVEL = 3; moveDish(LEVEL, 'A', 'B', 'C'); } }
结果:
从A移动1号到C 从A移动2号到B 从C移动1号到B 从A移动3号到C 从B移动1号到A 从B移动2号到C 从A移动1号到C
文章来源: 汉诺塔的解法