public class HanNuoTa {
public static void main(String[] args) {
hanoi(3, 'a', 'b', 'c');
}
//num表示多少个盘子,begin起始柱,middle中转柱,end终点柱
public static void hanoi(int num, char begin, char middle, char end) {
//num等于1,当前柱子上剩最后一个盘子,直接移动到终点柱子
if (num == 1) {
System.out.println(begin + "-->" + end);
} else {
//num-1代表减去最下面一个盘子后上面的盘子,看作一个整体,移到中转柱子。
//全部移到中转柱子后才可以吧最下面的移到终点柱子
//此时begin装的是a,end装的是c,middle装的是b
hanoi(num - 1, begin, end, middle);
// a c b 传到 hanoi(begin middle end)
// 其值为 a c b
System.out.println(begin + "-->" + end);//因此输出结果为 a --> b
//此时起始柱子最底盘以上的盘子全部转到中转柱,起始柱里的最底盘又转到终点柱子
// 此时的起始柱子没有盘子,终点柱子有一个转成功的盘子
//中转柱子此时变成了起始柱子,需将原本的起始柱子当做中转柱子,终点柱子不变
hanoi(num - 1, middle, begin, end);
}
}
}