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); } } }
08-26
4842
10-26
3993