hanoiTower

汉诺塔(hanoiTower)

思路分析:
1.假定只有一个盘,直接移动到c柱
2.若有多个盘,把它看作只有两个盘,最下面的和上面所有盘(num - 1)
3.把a柱上的上面所有盘(num-1),移动到b柱,借助c柱
4.把最下面的盘直接移动到c柱
5.把b柱所有盘移动到c柱,借助a柱

/**
 * 汉诺塔的实现
 */
public class HanoiTower {
    public static void main(String[] args){
        Tower tower = new Tower();
        tower.move(3,'A','B','C');

    }
}
class Tower{
    /*
    思路分析:
    1.假定只有一个盘,直接移动到c柱
    2.若有多个盘,把它看作只有两个盘,最下面的和上面所有盘(num - 1)
    3.把a柱上的上面所有盘(num-1),移动到b柱,借助c柱
    4.把最下面的盘直接移动到c柱
    5.把b柱所有盘移动到c柱,借助a柱
     */
    public void move(int num, char a, char b, char c){
        if (num == 1){
            System.out.println(a + "->" + c);
        }else {
            move(num - 1, a,c,b);
            System.out.println(a + "->" + c);
            move(num-1,b,a,c);
        }
    }
}
posted @ 2023-12-07 20:39  MGLblog  阅读(20)  评论(0)    收藏  举报