今日代码:Java汉诺塔

作业内容:汉诺塔

编程软件:IDEA

汉诺塔内容:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

挪放思路:有三个盘子A B C

    //1一个盘子   A→C                                                                     1  2^1 -1
    //                  直接挪
    //2两个盘子   A→B   A→C   B→C                                                         3  2^2 -1
    //       大的挪到C,小的挪到B,B再挪到C
    //3三个盘子   A→C   A→B   C→B   A→C  B→A  B→C  A→C   7  2^3 -1
    //...                                                                                                     ... 
    //64个盘子                                                                              2^64 -1

代码

public class TestDemo {

    public static void move(char pos1,char pos2) {
        System.out.println(pos1+" -> "+pos2+" ");
    }
    /**
     *
     * @param n      盘子个数
     * @param pos1   起始位置
     * @param pos2   中途位置
     * @param pos3   目的地位置
     */
    public static void hanoi(int n,char pos1,char pos2,char pos3) {
        if(n == 1) {
            move(pos1, pos3);
        } else {
            hanoi(n-1,pos1,pos2,pos3);
            move(pos1, pos3);
            hanoi(n-1,pos2,pos1,pos3);
        }
    }
    public static void main(String[] args) {
        //1   A→C                                    1  2^1 -1
        //2   A→B   A→C   B→C                        3  2^2 -1
        //3   A→C   A→B   C→B   A→C  B→A  B→C  A→C   7  2^3 -1
        //...                                            ...
        //64
        //2^64-1
        hanoi(1, 'A','B','C');
        System.out.println();
        hanoi(2,'A','B','C');
        System.out.println();
        hanoi(3,'A','B','C');
    }
}

结果
在这里插入图片描述

发布了27 篇原创文章 · 获赞 1 · 访问量 972

猜你喜欢

转载自blog.csdn.net/PhoenixZi/article/details/105495170