/**
* @author Drug
* @create 2020-05-12 14:25
*/
public class HanoiTower {
static int count = 0;
public static void main(String[] args) {
hanoiTower(5, 'a','b','c');
}
/**
* 汉若塔问题分治算法解决
* @param num 需要摆放的盘子个数
* @param a 目前在的柱子
* @param b 过度用
* @param c 位移的柱子
*/
public static void hanoiTower(int num,char a,char b, char c){
//如果只有一个盘子
if(num == 1){
count++;
System.out.println("第"+count+"次: 从"+a+" -> "+c);
}else{
//如果不止一个盘子,分为最下面一个和上面其他个;
//将上面num - 1个从a移动到b
hanoiTower(num-1, a, c, b);
//将最下面的从a移动到c
count++;
System.out.println("第"+count+"次: 从"+a+" -> "+c);
//将num-1个从b移动到c
hanoiTower(num-1,b,a,c);
}
}
}