码迷,mamicode.com
首页 > 其他好文 > 详细

汉诺塔

时间:2020-03-19 13:26:37      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:char s   sys   static   noi   lse   ram   直接   中转   一个   

/**
 * 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);
        }
    }
}

汉诺塔

标签:char s   sys   static   noi   lse   ram   直接   中转   一个   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!