汉诺塔问题

2019-04-02  本文已影响0人  JaJIng
public class Hanoi {

    public static void main(String[] args) {
        Hanoi hanoi = new Hanoi();
        hanoi.hanoiMove(3,'a','b','c');
    }

    //a:要挪动盘子的位置,c:需要挪动到的位置,b:借助的中间位置
    public void hanoiMove(int n,char a,char b,char c){
        if(n == 1){
            //递归出口
            move(a,c);
        }else{
            //把a柱除了最下面的那块上面的所有盘子看作一个整体,递归的挪到b去;
            hanoiMove(n-1,a,c,b);
            //把a柱最下面的那块挪到c;
            move(a,c);
            //把b柱的第一步到来的所有盘子最后挪到c;
            hanoiMove(n-1,b,a,c);
        }

    }

    public void move(char from ,char to){
        System.out.println("Move :"+ from + "," + to);
    }
}
上一篇下一篇

猜你喜欢

热点阅读