汉诺塔问题
题目 :如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数 思路解析 :将 A 中的 n-1 个圆盘移到 C 中,再将 A 中的 n-1 个圆盘移到 B,再将 C 中的圆盘移到 B 上,再将 A 中的最下面的圆盘移到 C中,再 B 中的 n-1 个圆盘移到 A,再 B 中的 最下面 个圆盘移到 C,再移动 A 中的个圆盘移到 C(这里以n=3为例,建议画图) 代码实现 : public static void hanoid(int n,char a,char b,char c ) { if(n<=0) { return; } // 将上面的 n-1 个圆盘经由 C 移到 B hanoid(n-1,a,c,b); // 此时将 A 底下的那块最大的圆盘移到 C move(a,c); // 再将 B 上的 n-1 个圆盘经由 A 移到 C上 hanoid(n-1,b,a,c); } public static void move(char a, char b) { // TODO Auto-generated method stub System.out.println(a + "->" + b); } 结果展示 : 谢谢观看