汉诺塔问题

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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容