将这个问题拆分为: 一个临界条件(递归结束) + 3步
代码
//汉诺塔的递归,分三步理解
public static void hanoi(int n,char from,char to,char helper) {
//递归结束条件
if(n == 1) {
move(from, to);
return;
}
//将from中的(n-1)个移动到helper中。借助to
hanoi(n - 1, from, helper, to);
//将from中的第n个移动to中
move(from, to);
//将helper中的(n-1)个移动到to。借助from区
hanoi(n - 1, helper, to, from);
}
//移动盘子
private static void move(char from,char to) {
++count;
System.out.println(from + "-->" + to);
}