题目:如下图所示,从左到右有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);
}
结果展示:
谢谢观看,路过点个赞…
来源:CSDN
作者:霄霄霄霄霄
链接:https://blog.csdn.net/hyx1249273846/article/details/103456242