Hanoi:

这里解决的是把a塔按规则移到b塔,有中间塔c塔。

这个问题有一个简单的解法,假设a,b,c排成一个三角形,a→b→c→a构成顺时针循环。在移到的过程中,如果是奇数次移动,则将最小的圆盘移到顺时针方向的下一个塔上;如果是偶数次移动,则保持最小的圆盘不动,在其他两个塔之间,将较小的圆盘移到另一个塔上。但是这个方法没法总结其设计思想。递归设计见程序。

import java.util.Scanner;public class HanoiTower {/*** 递归:n=1时,只需要把编号为1的圆盘从a移到b上; *    n>1时,先把n-1个较小的圆盘按规则从a移到c上,再把第n个圆盘从a移到b上,* 最后把c上的n-1个圆盘按规则移到b上。 * 通过这种递归,n圆盘的移动问题划分成了两次n-1个圆盘移动问题。*//*汉罗塔递归*/void hanoi(int n, String from, String to, String middle) {if (n > 0) {hanoi(n - 1, from, middle, to); // 先把n-1个圆盘按规则从from塔上移到辅助塔上System.out.println("移动第" + n + "个," + from + "->" + to); // 编号为n的圆盘从a移到b上hanoi(n - 1, middle, to, from); // 把辅助塔上的n-1个圆盘移到to塔上}}/*主函数*/public static void main(String[] args) {String from = "a", to = "b", middle = "c";Scanner in = new Scanner(System.in);System.out.print("输入汉罗塔的圆盘个数");int n = in.nextInt();HanoiTower ht = new HanoiTower();ht.hanoi(n, from, to, middle);}}

http://blog.csdn.net/zd_1471278687/article/details/11735111  这是更为全面地实现汉罗塔问题的程序

递归算法需要多次调用自身。实现这种递归调用的关键是为算法建立递归调用工作栈。

递归算法结构清晰,可读性强,容易用数学归纳法证明算法的正确性。但是它的运行效率比较低,在耗时和占用空间方面都比非递归算法多。

递归:汉罗塔问题的程序实现相关推荐

  1. 【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现

    递归 定义:在一个方法(函数)的内部调用该方法(函数)本身的编程方式 简而言之就是 "自己调自己" 在玩游戏之前让我们先对递归有一个简单的了解吧! 5.1 递归简介 递归必须有一个 ...

  2. python面向过程实践汉诺塔_递归汉诺塔-和递归汉诺塔相关的内容-阿里云开发者社区...

    多柱汉诺塔最优算法设计探究 多柱汉诺塔最优算法设计探究 引言 汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究.最简单的汉诺塔是三个柱子(A.B.C),因 ...

  3. 汉罗塔问题和杨辉三角(java实现)

    汉罗塔问题和杨辉三角问题 汉罗塔 思路分析: 代码: 杨辉三角 思路分析 代码 汉罗塔 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C) ...

  4. Java基础语法(汉罗塔)

    Java基础语法(汉罗塔) 1 起源 2 需求 3 分析 3.1 1个碟子 3.2 2个碟子 3.3 3个碟子 3.4 4个碟子 3.5 规律 4 代码实现:直接算法 5 代码实现封装:栈的思想 1 ...

  5. 多柱汉罗塔(python解法,带注释,注释为个人理解)

    一.参考链接: 1.普通汉罗塔链接(这边也是我的博文): (166条消息) 递归经典算法案例题(汉罗塔.阶乘.斐波那契代码)_南风~古草的博客-CSDN博客_汉罗塔 2.大佬的多柱汉罗塔博文(有数学推 ...

  6. c语言程序设计电子图书 汉诺塔,用C写的汉诺塔(hanoi)程序

    用C写的汉诺塔(hanoi)程序 分类:计算机等级 | 更新时间:2016-07-07| 来源:转载 #include void movedisc(unsigned n,char fromneedle ...

  7. python函数递归 汉诺塔

    4.7 python函数递归 汉诺塔 代码: def hanno(n,A,B,C):global stepif n==1:print('{}->{}'.format(A,C))step +=1e ...

  8. 怎么理解汉罗塔问题_小白理解的汉诺塔中的递归问题

    开头 学习c++到了递归这个地方,遇到了汉诺塔的问题,个人理解上感觉这个问题有点像动态规划,都是把问题去不断地分解,递归这里反复调用同一个方法来实现解决问题的操作,如果我要解决最终一个问题,那么我就把 ...

  9. 汉罗塔用java怎么编程_编程:递归编程解决汉诺塔问题(用java实现)

    //Li Cuiyun,October 14,2016. //用递归方法编程解决汉诺塔问题 package tutorial_3_5; import java.util.*; public class ...

最新文章

  1. Docker(十四):Docker:网络模式详解
  2. 30天敏捷结果(5):使用热图标识出重要事情
  3. 河南大学计算机组成原理,河南大学计算机组成原理考点
  4. 电脑word文档打不开怎么办_word怎么转pdf?两个值得学习的高效转换法
  5. js 数据写到本地记事本_微信小程序连接Mysql数据库步骤
  6. linux 网络 路由,网络路由的顺序在Linux中是否重要?
  7. 删除网络信息服务器端,网络安全:手动清除gh0st远控服务端
  8. Python3.8 安装gmpy2 教程, 无法安装gmpy2解决方案
  9. windows远程连接linux中mysql数据库
  10. 一本书学会可视化设计 pdf_【推荐给设计师看的11本书】电子版PDF
  11. 通过maven安装spire.pdf
  12. 2.3 The 10-armed Testbed 10摇臂老虎机试验台
  13. python输入年月日输出年月日_python时序分析
  14. 计算机组成原理一篇过
  15. kubernetes资源管理平台ratel
  16. 计算机一级插入页码,同一篇文档中插入相同页码的小技巧
  17. 水贝风机远程控制app
  18. 使用ArcPy实现创建ags文件
  19. 计算机科普知识宣讲实践,【三下乡进行时】增强科技意识 提高生活质量——新疆大学2018年“两学一实践”科普大宣讲社会实践信息科学与工程学院分队走进莎车县伯什坎特乡...
  20. 续写千倍币神话,PlusFo到底是何方神圣?

热门文章

  1. 介绍一个成功的 Git 分支模型
  2. 李日学撤回私有化要约:寺库市值跌至1783万美元 趣店损失惨重
  3. MIZ7035上的AXI接口的MIG测试
  4. 黑盒测试技术(概念等价类划分法详细)——软件质量保证与测试
  5. 运用Python抓取二手房价格与信息的两种常用方法
  6. echarts图表生成base64
  7. 华为 android 5.0系统下载地址,华为Mate8 EMUI5.0系统专用官方原版recovery下载和刷入...
  8. 秒杀产品总是抢不到?抢单助手来报道
  9. Android 语音输入API使用
  10. 【翻译】WF从入门到精通(第十七章):关联及本地主机通信