Java递归实现汉诺塔问题

简介: 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。

java递归实现汉诺塔问题


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


思路:
一、如果只有一个圆盘的时候,直接把圆盘从A移动到C即可
二、如果有两个或两个以上圆盘的时候需要三步:
1.把前n-1个圆盘看成一个整体,把这个整体从A盘移动到B盘
2.把第n个圆盘从A移动到C
3.把B盘上的n-1个圆盘从B盘移动到C盘


代码实现:
public class HanNuoTa {
    public static void main(String[] args) {
        int nDisks = 3;
        doTowers(nDisks, 'A', 'B', 'C');
    }
    public static void doTowers(int topN, char from, char inter, char to) {
        if (topN == 1){
            System.out.println("Disk 1 from "
                    + from + " to " + to);
        }else {
            doTowers(topN - 1, from, to, inter);
            System.out.println("Disk "
                    + topN + " from " + from + " to " + to);
            doTowers(topN - 1, inter, from, to);

        }
    }
}
目录
相关文章
|
1月前
|
Java
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
【汉诺塔】经典递归问题(Java实现)图文并茂讲解
|
1月前
|
Java
java中递归实例
java中递归实例
25 0
|
2天前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
5 1
|
15天前
|
Java
Java递归:深入理解与应用
Java递归:深入理解与应用
11 1
|
19天前
|
存储 算法 Java
Java中递归
Java中递归
16 0
|
20天前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
|
20天前
|
Java
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配...
<Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配
38 2
|
24天前
|
算法 Java 测试技术
滚雪球学Java(38):探索Java递归的无穷魅力,解决复杂问题轻松搞定
【5月更文挑战第13天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
12 0
滚雪球学Java(38):探索Java递归的无穷魅力,解决复杂问题轻松搞定
|
26天前
|
算法 Java
Java程序设计基础——递归
Java程序设计基础——递归
|
1月前
|
Java C语言
详解java方法与递归
详解java方法与递归
16 3