欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汉诺塔问题

程序员文章站 2022-07-15 18:36:26
...

汉诺塔问题

汉诺塔问题汉诺塔问题

package demo3;

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){
        //只有1个盘子
        if(n == 1){
            System.out.println("第1个盘子从"+from+"移到"+to);
        //无论有多少个盘子,都认为只有两个,上面的所有盘子和最下面一个盘子
        }else{
            //将上面的所有盘子从开始位置移到中间位置
            hanoi(n-1,from,to,in);
            //移动最下面的盘子,将第n个盘子从开始位置移到目标位置
            System.out.println("第"+n+"个盘子从"+from+"移到"+to);
            //将上面所有的盘子从中间位置移到目标位置
            hanoi(n-1,in,from,to);
        }
    }
}
相关标签: 数据结构和算法