思路参考:
https://blog.csdn.net/yafei450225664/article/details/8647908
public class HanoiPro {
public static void main(String[] args) {
// Auto-generated method stub
System.out.println("请输入汉诺塔A柱的块数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
HanoiPro hanoi = new HanoiPro();
hanoi.hanoi(n, 'A', 'B', 'C');
}
public void hanoi(int n, char A, char B, char C) {
if (n == 1) {
show(A, C);
} else {
// 除第1块外n块数都在重复n-1块做的事+第1块做的事+n-1块做的事
// 第一个hanoi,A是原始柱,前面的目的只是将盘子B变成C
// 第二个hanoi,C是最终柱,后面的目的只是将盘子B变成A
hanoi(n - 1, A, C, B);
show(A, C);
hanoi(n - 1, B, A, C);
}
}
// 打印移动路径
private void show(char A, char C) {
System.out.println("Direction:" + A + "--->" + C);
}
}