笔者今天在看数据结构中书的时候,发现其中一个关于介绍Hanoi塔的小节,里面的内容很是有意思(书是严蔚敏的数据结构,章节是第三章第三小节),因而本身尝试了下手动实现代码解决Hanoi塔问题,意在加深理解栈与递归的使用。摘录本身的实现过程:数据结构
package henu_xb; public class Hanoi { public Hanoi() { System.out.println("游戏开始!"); } /** * 将塔座上的num个圆盘按从小到大的顺序,借助y柱从x柱移动到z柱上。 * @param num 多少个圆盘 * @param x 待移动的柱 * @param y 辅助柱 * @param z 目标柱 */ public void MyHanoi(int num, char x, char y, char z) { if (num == 1) { //将编号1的圆盘从x柱移到z柱。 MyMove(1, x, z); } else { // 将除第num个圆盘外的其它盘经过z柱从x柱移动到y柱上 MyHanoi(num - 1, x, z, y); // 将编号为num的盘从x柱移动到z柱 MyMove(num,x,z); // 再将除第num个圆盘外的其它盘经过x柱从y柱移动到z柱上 MyHanoi(num -1, y, x, z); } } /** * 将编号为 no的圆盘从sou柱上移动到des柱上 * @param no 编号 * @param sou * @param des */ public void MyMove(int no, char sou, char des) { System.out.println(String.format("记录:编号为 %s 的圆盘从 %s 柱上移到了 %s 柱上!",no,sou,des)); } public static void main(String[] args) { // TODO Auto-generated method stub Hanoi h = new Hanoi(); char x = 'x'; char y = 'y'; char z = 'z'; h.MyHanoi(3, x, y, z); } }
OK,就先记录到这!code