>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27426 个阅读者 刷新本主题
 * 贴子主题:  Java 入门实用代码:汉诺塔算法 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-22 00:08:32     消息  查看  搜索  好友  邮件  复制  引用

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

后来,这个传说就演变为汉诺塔游戏,玩法如下:    
  • 1.有三根杆子A,B,C。A杆上有若干碟子
  •    2.每次移动一块碟子,小的只能叠在大的上面
  • 3.把所有碟子从A杆全部移到C杆上
     以下实例演示了汉诺塔算法的实现:                      

MainClass.java 文件

public   class   MainClass   {
     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 ) ;
         }
     }
}

以上代码运行输出结果为:

Disk 1 from A to C

Disk 2 from A to B

Disk 1 from C to B

Disk 3 from A to C

Disk 1 from B to A

Disk 2 from B to C

Disk 1 from A to C


程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-01-23 21:07:24 重新编辑]
  Java面向对象编程-->集合(下)
  JavaWeb开发-->JSP中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->通过JavaMail API收发邮件
  精通Spring-->计算属性和数据监听
  Vue3开发-->Vue简介
  求素数
  10道Java编程基础练习题
  Java虚拟机安全性-class文件检验器
  用注解去代替if-else的技巧
  BST 二叉搜索树
  靠一个HashMap的讲解打动了头条面试官
  请求大佬们的帮助
  java 中文繁简体转换工具 opencc4j
  编程语言搜索量排行:用十年数据告诉你什么最受欢迎
  Java方法的嵌套与递归调用
  volatile 实现原理
  java常见的几种调用机制:同步调用,异步调用,回调
  Java入门实用代码: List 列表中元素的替换
  Java入门实用代码:List 循环移动元素
  Java入门实用代码:字符串替换
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。