大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
思路
因为要将 A 柱上的圆盘全部转移到 C 柱上,所以先将最下面的最大的圆盘转移到 C 柱,将上面所有的圆盘看成一个整体,那么将这个整体转移到 B 柱上就可以将最大的圆盘转移到 C 柱了。然后,将现在 B 柱上最大的圆盘转移到 C 盘上需要借助 A 盘。重复上面的步骤,利用递归的思想。
代码
package Recursion;
public class _04_HanoiTower {
public static void main(String[] args) {
_05_Tower tower = new _05_Tower();
tower.move(5,'A','B','C');
}
}
package Recursion;
public class _05_Tower {
// num 表示要移动的个数, a,b,c 分别表示A塔, B塔,C塔
public void move(int num, char a, char b, char c) {
//如果只有一个盘 num = 1
if (num == 1) {
System.out.println(a + "->" + c);
}else{
//如果有多个盘,可以看成两个,最下面的和上面的所有盘
//(1)先移动上面所有的盘到 b,借助 c
move(num - 1, a, c, b);
//(2)把最下面的的这个盘,移动到 c
System.out.println(a + "->" + c);
//(3)再把 b塔的所有盘,移动到c , 借助a
move(num - 1, b, a, c);
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182810.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...