/**
* @author Casey
* @version 1.0
*/
public class HanoiTower{
public static void main(String[] args) {
hanoiTower(5, 'A', 'B', 'C');
}
public static void hanoiTower(int num, char A, char B, char C) {
if (num == 1) {
System.out.println(A +"->" + C);
} else {
hanoiTower(num -1, A, C, B);
System.out.println(A +"->" + C);
hanoiTower(num -1, B, A, C);
}
}
}
递归的思想:
上面5个移动到C->上面4个移动到B->上面3个移动到C->上面2个移动到B->上面1个移动到C
简单理解:
目标:把所有移动到目标盘
每次递归时把Char C当做目标杆,
不要去想这个Char C到底是哪个杆,就把Char C当做目标杆来看,目的就是把现在的num个盘子移动到C(目标杆)
hanoiTower(num -1, A, C, B); 把除最底下的所有圆盘移动到除目标杆的另一个杆上
System.out.println(A +"->" + C);把最底下的圆盘移动到目标杆
hanoiTower(num -1, B, A, C);把第一步移动过的那一堆圆盘移动到目标杆
每次递归都要这么想,才不会绕进去