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

数据结构与算法基础-汉诺塔(Java)

程序员文章站 2024-03-16 16:01:04
...
/**
 * @author lixin
 * @date 2019/3/14 - 21:21
 */
public class Testhanoi {

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

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