用递归算法的来解决汉诺塔问题

用递归算法的来解决汉诺塔问题汉诺塔汉诺塔是一个发源于印度的益智游戏 也叫河内塔 相传它源于印度神话中的大梵天创造的三个金刚柱 一根柱子上叠着上下从小到大 64 个黄金圆盘 大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上 其中大圆盘不能放在小圆盘上面 当这 64 个圆盘移动完的时候 世界就将毁灭 汉诺塔问题源于印度神话那么好多人会问 64 个圆盘移动到底会花多少时间 那么古代印度距离现在已经

汉诺塔

汉诺塔问题算法

代码实现

这里的关键在于对三个关键步骤的代码实现。

public class Hanoilmpl { public void hanoi(int n, char A, char B, char C) { if (n == 1) { move(A, C); } else { hanoi(n - 1, A, C, B);//步骤1 按ACB数序执行N-1的汉诺塔移动 move(A, C); //步骤2 执行最大盘子移动 hanoi(n - 1, B, A, C);//步骤3 按BAC数序执行N-1的汉诺塔移动 } } private void move(char A, char C) { 
  //执行最大盘子的从A-C的移动 System.out.println("move:" + A + "--->" + C); } public static void main(String[] args) { Hanoilmpl hanoi = new Hanoilmpl(); System.out.println("移动汉诺塔的步骤:"); hanoi.hanoi(3, 'a', 'b', 'c'); } } 

关于递归的四条基本法则

1.基准情形。必须有某些基准情形,它无需递归就能解出。
2.不断推进。对于那些需要递归求解的情形,每一次递归调用都必须要使求解的状况朝接近基准情形的方向推进。
3.设计法则。假设所有的递归调用都能运行。
4.合成效益法则。在求解同一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作
——-摘自《数据结构与算法分析(机械工业出版社 Mark Allen Weiss著)》








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223375.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:13
下一篇 2026年3月17日 下午2:14


相关推荐

  • Element.clientWidth属性

    Element.clientWidth属性内联元素以及没有CSS样式的元素的clientWidth属性值为0。Element.clientWidth属性表示元素的内部宽度,以像素计。该属性包括内边距padding,但不包括边框border、外边距margin和垂直滚动条(如果有的话)。intElemClientWidth是一个整数,表示元素的clientWidth。clientWidth是一个只读属性。…

    2022年7月22日
    19
  • Cursor 想升级没有办法付钱,付费方案详解

    Cursor 想升级没有办法付钱,付费方案详解

    2026年3月16日
    2
  • connectionStrings「建议收藏」

    connectionStrings「建议收藏」<connectionStrings>     <add name=”connstr” connectionString=”server=.;uid=

    2022年5月11日
    44
  • 认识Vue 的 export、export default、import

    认识Vue 的 export、export default、import首先要知道 export import exportdefaul 是什么 nbsp 作为 copy 砖家 具体概念我还真是迷糊 查阅资料 ES6 模块主要有两个功能 export 和 import export 用于对外输出本模块 一个文件可以理解为一个模块 变量的接口 import 用于在一个模块中加载另一个含有 export 接口的模块 也就是说使用 export 命令定义了模块的对外接口以后 其他 JS

    2025年8月14日
    7
  • IOS 最新邓白氏编码申请

    IOS 最新邓白氏编码申请iOS 开发邓白氏编码申请流程 前言 邓白氏编码不是所有账号都需要的 如果你只是申请个人账号 不需要显示公司的信息 那就不需要邓白氏编码 直接 nbsp 99 美元那个个人的就可以 如果你 nbsp App 需要显示的是公司的信息 那就需要了 apple 三种开发者账号的区别 1 个人开发者 可以上传 store 99 最多支持 100 台测试设备 2 公司开发者账号 也叫组织开发者账号 可以上传 appstore 产品

    2026年3月17日
    6
  • 大数据—Hadoop生态圈

    大数据—Hadoop生态圈前言整理了一下目前常用的 hadoop 组件 后续将会对这些组件的具体应用场景和使用细节进行展开分析 如果大家发现有更好的建议欢迎大家在下方留言

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号