汉诺塔

Posted me-we

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉诺塔相关的知识,希望对你有一定的参考价值。

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

以上是关于汉诺塔的主要内容,如果未能解决你的问题,请参考以下文章

python汉诺塔非递归

C语言汉诺塔问题

汉诺塔问题的详解-附代码

python3汉诺塔简单实现代码

汉诺塔(代码记录+注释)

hdu 汉诺塔