xinrong2019 / xinrong2019.github.io

My Blog
https://xinrong2019.github.io
1 stars 1 forks source link

20190702 数据结构和算法之汉诺塔问题 #81

Open xinrong2019 opened 5 years ago

xinrong2019 commented 5 years ago
public class TestHanoi {

    public static void main(String[] args) {
        hanoi(5,'A','B','C');
    }

    /**
     * @param n     共有N个盘子
     * @param from  开始的柱子
     * @param in        中间的柱子
     * @param to        目标柱子
     * 无论有多少个盘子,都认为只有两个。上面的所有盘子和最下面一个盘子。
     */
    public static void hanoi(int n,char from,char in,char to) {
        //只有一个盘子。
        if(n==1) {
            System.out.println("第1个盘子从"+from+"移到"+to);
        //无论有多少个盘子,都认为只有两个。上面的所有盘子和最下面一个盘子。
        }else {
            //移动上面所有的盘子到中间位置
            hanoi(n-1,from,to,in);
            //移动下面的盘子
            System.out.println("第"+n+"个盘子从"+from+"移到"+to);
            //把上面的所有盘子从中间位置移到目标位置
            hanoi(n-1,in,from,to);
        }
    }

}