Java数据结构:汉诺塔问题

比较简单,直接看代码

汉诺塔问题求解问题
public class Example3_4 {
	private int c = 0;// 全局变量,对搬动计数

	// 将塔座x上按直径由小到大且自上而下的编号为1至n的n个圆盘按规则移到塔座z上,y用作辅助塔座
	public void hanoi(int n, char x, char y, char z) {
		if (n == 1) {
			move(x, 1, z); // 将编号为1的圆盘从x移到z
		} else {
			hanoi(n - 1, x, z, y);// 将x上编号为1至n-1的圆盘移到y,z作辅助塔
			move(x, n, z);// 将编号为n的圆盘从x移到z
			hanoi(n - 1, y, x, z);// 将y上编号为1至n-1的圆盘移到z,x作辅助塔
		}
	}

	// 移动操作,将编号为n的圆盘从x移到z
	public void move(char x, int n, char z) {
		System.out.println("第" + ++c + "次移动: " + n + "号圆盘," + x + "->" + z);
	}

	public static void main(String[] args) {
		Example3_4 h = new Example3_4();
		h.hanoi(3, 'x', 'y', 'z');// 对于圆盘数量为3进行移动
	}
}

// 调试结果:
// 第1次移动: 1号圆盘,x->z
// 第2次移动: 2号圆盘,x->y
// 第3次移动: 1号圆盘,z->y
// 第4次移动: 3号圆盘,x->z
// 第5次移动: 1号圆盘,y->x
// 第6次移动: 2号圆盘,y->z
// 第7次移动: 1号圆盘,x->z

 

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/qq_42192693/article/details/82420885
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞