汉诺塔(java)

简介: 汉诺塔(java)

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

 
public class Hanoitower {
    static int count = 0;
 
    public static void main(String[] args) {
        hanoiTower(5, 'A', 'B', 'C');
        System.out.println(count);
    }
 
    public static void hanoiTower(int num, char a, char b, char c) {
        count++;
        //    如果只有一个盘
        if (num == 1) {
            System.out.println("第1个盘从 " + a + "->" + c);
        } else {
            //如果是n>=2,我们可以看做两个盘 1、最下边的一个,2.上面所有的;
            //上边所有的从A移动到B
            hanoiTower(num - 1, a, c, b);
            //    把最下边的盘A移动到C
            System.out.println("第" + num + "个盘从 " + a + "->" + c);
            //把B塔的所有盘从B移动到C,
            hanoiTower(num - 1, b, a, c);
        }
    }
}
第1个盘从 A->C
第2个盘从 A->B
第1个盘从 C->B
第3个盘从 A->C
第1个盘从 B->A
第2个盘从 B->C
第1个盘从 A->C
第4个盘从 A->B
第1个盘从 C->B
第2个盘从 C->A
第1个盘从 B->A
第3个盘从 C->B
第1个盘从 A->C
第2个盘从 A->B
第1个盘从 C->B
第5个盘从 A->C
第1个盘从 B->A
第2个盘从 B->C
第1个盘从 A->C
第3个盘从 B->A
第1个盘从 C->B
第2个盘从 C->A
第1个盘从 B->A
第4个盘从 B->C
第1个盘从 A->C
第2个盘从 A->B
第1个盘从 C->B
第3个盘从 A->C
第1个盘从 B->A
第2个盘从 B->C
第1个盘从 A->C
31
相关文章
|
5月前
|
Java
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
|
5月前
|
Java
使用Java实现汉诺塔问题~
使用Java实现汉诺塔问题~
|
Java
java实现汉诺塔问题
java实现汉诺塔问题
249 0
|
Java C语言
逻辑训练--经典汉诺塔问题(C和JAVA递归实现)
逻辑训练--经典汉诺塔问题(C和JAVA递归实现)
汉诺塔问题(Hanoi Tower)--递归典型问题--Java版(图文详解)
汉诺塔问题(Hanoi Tower)--递归典型问题--Java版(图文详解)
|
Java
Java递归基础案例-汉诺塔
Java递归基础案例-汉诺塔
83 0
Java递归基础案例-汉诺塔
|
Java
经典汉诺塔java
经典汉诺塔java
86 0
经典汉诺塔java
|
Java
Java递归实现汉诺塔问题
汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。
130 0