/**
* 问题:汉罗塔问题
* 思路:递归
* bug:wu
*/
public class Test16 {
public static void main(String[] args) {
hanio('A','C', 'B',3);
System.out.print(count(3));
}
public static int count(int n) { //计算汉罗塔移动次数
if(n == 1)
return 1;
//对应hanio的第一步
int first = count(n-1);
//对应hanio的第三步
int end = count(n-1);
//因为最后一步的移动,所以加1
return first + end + 1;
}
public static void hanio(char first, char end, char middle, int n) {
//出口
if(n == 1) {
System.out.println(first+"-->"+end);
return;
}
//第一步移动最后一层上面的n-1层到middle上
hanio(first,middle, end,n - 1);
//将最后一层从first移到end上
System.out.println(first+"-->"+end);
//最后将middle上的n-1层移动到end上
hanio(middle,end, first,n - 1);
}
}