首页 > 其他 > 详细

汉诺塔

时间:2020-03-19 13:51:09      阅读:58      评论:0      收藏:0      [点我收藏+]
/**
 * Hanoi
 */
public class Hanoi {

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

    /**
     * 递归汉诺塔
     * 
     * @param n        盘子数
     * @param start    起始柱子
     * @param transfer 中转柱子
     * @param target   目标柱子
     */
    public static void hanoi(int n, char start, char transfer, char target) {
        // 递归出口,只有一个盘子,直接搬到目标柱子
        if (n == 1) {
            System.out.println(start + " --> " + target);
        } else {
            // 起始柱子借助目标柱子,将盘子都移动到中转柱子(除了最大的盘子)
            hanoi(n - 1, start, target, transfer);
            System.out.println(start + " --> " + target);

            // 中转柱子借助起始柱子,将盘子都移动到目标柱子
            hanoi(n - 1, transfer, start, target);
        }
    }
}

汉诺塔

原文:https://www.cnblogs.com/ME-WE/p/12523657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!