//规则:有A,B,C三个柱子,在A柱子上有n个圆盘从小到大摞起来,要求每次移动一个圆盘,最终将所有圆盘按照从小到大移动到C柱子上,每次大的不能压小的。
//思路:若f(n)->C,则f(n-1)->B,f(n-2)->C,f(n-3)->B,以此类推可以推出f(1)首先去哪个柱子。那么每当确定一个柱子那么下一个柱子位置也确定,加入f(1)->C,那么f(2)->B,这里注意所有的开始的圆盘都在A这个柱子上,若圆盘较多,将多个圆盘移到B上那么,此时他们的去向应该是A或C。见代码:
package hanoT;
public class hannoT {
public void exchange(int n, char a, char b, char c){
if(n == 1){
System.out.println("The " + n + " from " + a + " to " + c);
}else{
exchange(n-1, a, c, b);
System.out.println("The " + n + " from " + a + " to " + c);
exchange(n-1, b, a, c);
}
}
public static void main(String[] args) {
int f = 3;
hannoT t = new hannoT();
t.exchange(f, 'a', 'b', 'c');
}
}