目录
一.汉诺塔的由来
二. 用图来解释汉诺塔
要将所有的方块 从上到下为小到大的顺序排列 到C上
因此 我们先
第一步
A->C
A->B
第二步
C->B
A->C
第三步
B->A
B->C
A->C
完成!
三.代码实现
为了方便 我只写下 方 法
public static void hanio(int n,char ps1,char ps2,char ps3) {
if(n==1){
move(ps1,ps3); //如果n为一个,直接将其移到C
}else{
hanio(n-1,ps1,ps3,ps2); //先将除了最大的方块,n-1个方块 借助C从A移到B
move(ps1,ps3); //将最大的方块从A -> C
hanio(n-1,ps2,ps1,ps3); //将n-1的方块 借助A 从B到C
}
}
public static void move(ps1,ps2) {
System.out.println(ps1+" -> "+ps2);
}
我将提供完整代码 供大家参考
public class Hanoi {
/**
*
* @param n 盘子的数目
* @param origin 源座
* @param assist 辅助座
* @param destination 目的座
*/
public void hanoi(int n, char origin, char assist, char destination) {
if (n == 1) {
move(origin, destination);
} else {
hanoi(n - 1, origin, destination, assist);
move(origin, destination);
hanoi(n - 1, assist, origin, destination);
}
}
// Print the route of the movement
private void move(char origin, char destination) {
System.out.println("Direction:" + origin + "--->" + destination);
}
public static void main(String[] args) {
Hanoi hanoi = new Hanoi();
hanoi.hanoi(3, 'A', 'B', 'C');
}
}