java求解汉诺塔问题示例

 更新时间:2014年02月21日 12:00:07   作者:  
汉诺塔问题的描述如下:有3根柱子A、B和C,在A上从上往下按照从小到大的顺序放着一些圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。编程实现3阶汉诺塔的求解步骤

思路如下:

要实现3阶汉诺塔的求解步骤,也就是说初始状态时,A上从上到下有三个盘子,分别为1号盘、2号盘和3号盘,其中1号盘最小,3号盘最大;
判断剩余盘子个数,如果只有一个盘子就退出迭代,如果有大于一个盘子就继续迭代。
代码如下:

复制代码 代码如下:

public class HanoiTower {
    public static void moveDish(int level, char from, char inter, char to) {
        if (level == 1) {// 如果只有一个盘子就退出迭代
            System.out.println("从 " + from + " 移动盘子 1 号到 " + to);
        } else {// 如果有大于一个盘子就继续迭代
            moveDish(level - 1, from, to, inter);
            System.out.println("从 " + from + " 移动盘子 " + level + " 号到 " + to);
            moveDish(level - 1, inter, from, to);
        }
    }

    public static void main(String[] args) {
        int nDisks = 3;// 设置汉诺塔为3阶
        moveDish(nDisks, 'A', 'B', 'C');// 实现移动算法
    }
}

相关文章

  • springboot + mybatis-plus实现多表联合查询功能(注解方式)

    springboot + mybatis-plus实现多表联合查询功能(注解方式)

    这篇文章主要介绍了springboot + mybatis-plus实现多表联合查询功能,是最简单的一种注解方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 解决IDEA中快捷键Alt+Enter不能使用的问题

    解决IDEA中快捷键Alt+Enter不能使用的问题

    这篇文章主要介绍了解决IDEA中快捷键Alt+Enter不能使用的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • SpringMVC框架REST架构体系原理分析

    SpringMVC框架REST架构体系原理分析

    REST:Representational State Transfer,资源表现层状态转换,是目前⽐较主流的⼀种互联网软件架构,它结构清晰、标准规范、易于理解、便于扩展
    2021-09-09
  • 关于Controller层和Service层的类报错问题及解决方案

    关于Controller层和Service层的类报错问题及解决方案

    这篇文章主要介绍了关于Controller层和Service层的类报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Netty4之如何实现HTTP请求、响应

    Netty4之如何实现HTTP请求、响应

    这篇文章主要介绍了Netty4之如何实现HTTP请求、响应问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java网络编程UDP协议发送接收数据

    Java网络编程UDP协议发送接收数据

    这篇文章主要为大家详细介绍了Java网络编程UDP协议发送接收数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Maven中optional标签用法详解

    Maven中optional标签用法详解

    这篇文章主要介绍了Maven中optional标签,文章中有详细的代码示例供大家参考,对大家的学习或工作有一定的参考价值,感兴趣的小伙伴可以借鉴一下
    2023-05-05
  • 基于mybatis高级映射多对多查询的实现

    基于mybatis高级映射多对多查询的实现

    下面小编就为大家带来一篇基于mybatis高级映射多对多查询的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • IDEA中没有Mapper.xml模板选项的处理方法

    IDEA中没有Mapper.xml模板选项的处理方法

    这篇文章主要介绍了IDEA中没有Mapper.xml模板选项的处理方法,需其实解决方法很简单,只需要在idea中导入模板即可,本文图文的形式给大家分享解决方法,需要的朋友可以参考下
    2021-04-04
  • Sentinel 断路器在Spring Cloud使用详解

    Sentinel 断路器在Spring Cloud使用详解

    Sentinel是阿里巴巴开源的一款微服务流量控制组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性,本文介绍Sentinel 断路器在Spring Cloud使用,感兴趣的朋友一起看看吧
    2025-02-02

最新评论