汉诺塔问题(解出来了带你看洛丽塔)

这篇具有很好参考价值的文章主要介绍了汉诺塔问题(解出来了带你看洛丽塔)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

汉诺塔问题(解出来了带你看洛丽塔)

 

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。

🥰内容专栏:这里是《算法详解》,笔者用重金(时间和精力)打造,将算法知识一网打尽,希望可以帮到读者们哦。

🥴内容分享:本期会对C语言中的汉诺塔进行分析,讲解什么是汉诺塔,怎样实现冒泡排序。

😘:不要998,只要一件三连,三连买不了吃亏,买不了上当(写作不易,求求了💓)

目录

🍉前言

🍊什么叫汉诺塔

🍑汉诺塔移动过程分析

🍓汉诺塔移动次数分析

🥝具体代码分析

🍇总结


🍉前言

上期文章我们对c语言中的冒泡排序进行了详细的分析,对于什么是冒泡排序,冒泡排序的思想,怎么实现它进行了分析,让大家对冒泡排序有了清晰的认识。接下来会对汉诺塔问题进行讲解,大家可以端上小板凳了。

🍊什么叫汉诺塔

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。这就是汉诺塔的来源,现在逐渐演变成了一个益智游戏。大家可以想一想,移动这64片圆盘需要多少次呢?今天我们就用函数的递归来实现一下。

🍑汉诺塔移动过程分析

汉诺塔的规则是:有abc三根柱子,要a柱子上的盘子都移动到c盘上。要求是每次只能移动一个,且大盘子要在小盘子的下面。这里我们以三阶汉诺塔为例来进行分析,通过分析我们可以发现可以分为三步:第一步 将n-1个通过c柱子移动到b柱子 第二步 将第n个移动到c柱子 第三步 将n-1个通过a柱子移动到c柱子

汉诺塔问题(解出来了带你看洛丽塔)

 汉诺塔问题(解出来了带你看洛丽塔)

🍓汉诺塔移动次数分析

对于这么难以计算的问题,我们可以通过穷尽法来从中找规律:

阶层 次数 规律
1 1 2^1-1
2 3 2^2-1
3 7 2^3-1

4

......

n

15

......

......

2^4-1

.......

2^n-1

 

通过穷尽法,我们发现,这个汉诺塔的移动次数是成指数增长的。当有64个盘子时,我们需要移动2^64次=18446744073709551616次,如果一次一秒,婆罗门要移动5833亿年!

n阶移动的次数:和上面说的可分为三步,可以把步骤一将n-1个通过c柱子移动到b柱子的次数为f(x-1),步骤二为1,步骤三n-1个通过a柱子移动到c柱子的次数也为f(x-1). 这n的次数为2*F(x-1)-1;

🥝具体代码分析

用函数递归求移动的次数 

汉诺塔问题(解出来了带你看洛丽塔)

用函数递归打印移动的过程

汉诺塔问题(解出来了带你看洛丽塔)


🍇总结

我们可以发现在思考汉诺塔这样的问题的时候,在脑子里想是很难想明白的。这时我们就需要借助图形在宏观的帮助我们了解 ,使问题清晰化。文章来源地址https://www.toymoban.com/news/detail-454410.html

到了这里,关于汉诺塔问题(解出来了带你看洛丽塔)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇文章带你看懂5G网络(接入网+承载网+核心网)

    通过这张网络简图帮助大家认识一下全网的网络架构,通过对全网架构的了解,将方便您对后面每一块网络细节的理解。 这张图分为左右两部分,右边为无线侧网络架构,左边为固定侧网络架构。 无线侧:手机或者集团客户通过基站接入到无线接入网,在接入网侧可以通过

    2024年02月03日
    浏览(79)
  • 【一文带你看懂什么是VLAN、网关、DNS和子网掩码等 】

    很多小伙伴多次问到什么是VLAN、三层交换机、网关、MAC地址、DNS和子网掩码,它们具体的定位和用途。确实,如今网络技术已经覆盖了非常广阔的工作和生活场景,但很多人在日常的应用当中还是不太懂这些知识,今天我们就尝试用比较通俗的方式来一次性讲解清楚。 一、

    2024年02月05日
    浏览(42)
  • Python实现 — — 汉诺塔问题

    我们今天来看一个很有意思的实例,叫做汉诺塔问题。 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大

    2024年02月04日
    浏览(27)
  • 【汉诺塔问题分析】

    汉诺塔问题是一种经典的递归问题,它由法国数学家Huygens在1665年发现,也是一道有趣的数学难题。这道问题的主要目的是将三根柱子上的一堆盘子移动到另一根柱子上,移动过程中每次只能移动一个盘子,并且大盘子不能放在小盘子上面。 下面我们来详细解析这个问题:

    2024年02月16日
    浏览(41)
  • 经典算法-----汉诺塔问题

    今天我们学习一个老经典的问题-----汉诺塔问题,可能在学习编程之前我们就听说过这个问题,那这里我们如何去通过编程的方式去解决这么一个问题呢?下面接着看。 问题描述 这里是引用汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3

    2024年02月07日
    浏览(38)
  • 经典递归算法——汉诺塔问题

             相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动

    2024年02月06日
    浏览(41)
  • 递归求解汉诺塔问题(超详解)

    这个问题是关于三根柱子和一些圆盘的游戏。 初始时,所有的圆盘按照从大到小的顺序叠放在一根柱子上,目标是将所有圆盘从起始柱子移动到目标柱子上,在移动过程中,要满足以下规则喵: 每次只能移动一个圆盘。 大圆盘不能放在小圆盘上。 只能通过中间柱子作为辅

    2024年02月15日
    浏览(77)
  • 【面试题08.06.汉诺塔问题】

    2024年02月08日
    浏览(28)
  • 递推法证明汉诺塔问题

    首先给出汉诺塔递推法的公式: f(n)=f(n-1)*2+1 同时我们知道,如果只有一个盘片要移动的话只需移动一次,即f(1)=1为初始条件。 综上递推公式为: 假设,现有A,B,C三个柱子可用于存放盘子,并设将n个盘片从A柱移往C柱要使用f(n)次移动。 基于上述假设,我们可以知道要想将

    2024年02月16日
    浏览(29)
  • 汉诺塔问题的时间复杂度

    汉诺塔(Tower of Hanoi)是一个经典的 递归算法 问题。它描述的是有三根杆子和若干个不同大小的圆盘,圆盘可以按照大小顺序放在杆子上。初始时,所有圆盘都放在左边的杆子上,目标是将 所有圆盘移动到右边的杆子上,并且每次移动时必须遵守下列两个规则: 一次只能移

    2024年02月03日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包