汉罗塔问题_6层汉诺塔最少步骤

汉罗塔问题_6层汉诺塔最少步骤Hanoi汉诺塔是一个发源于印度的益智游戏,也叫河内塔。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。好吧上面这个东西是我直接百度copy的.这个源自孤古印度的游戏,还是有点意思的,也和递归扯上关系.但是我不明白…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Hanoi

汉诺塔是一个发源于印度的益智游戏,也叫河内塔。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。

好吧上面这个东西是我直接百度copy的.

这个源自孤古印度的游戏, 还是有点意思的, 也和递归扯上关系.

但是我不明白的是, 能把这个问题转为数学问题, 再以代码的形式实现, 为什么要去把行为模拟出来?(百度很多代码都是把行为模拟了.)

因为我们在处理这个问题的时候, 移动罗盘的行为就已经在大脑中实现了, 我觉得关键是计算的结果. 当然我不是说过程就不重要, 只是体现了我在思考这个的游戏的时候, 直接就去算结果了, 为了能够用到递归, 我把的数量不同的罗盘的移动次数相加.

因为这个游戏的数学公式表达为:
f ( n ) = 2 n − 1 f(n) = 2^n – 1 f(n)=2n1
比如我要移动64个罗盘:
f ( 64 ) = 2 64 − 1 f(64) = 2^{64} – 1 f(64)=2641
那么我们把不同罗盘数量的移动次数相加:

#!/usr/bin/env python3
""" 好吧, 是有点Low. """
def hanoi(n):
    if n >= 1:
        a.append(2**n-1)
        return hanoi(n-1)


if __name__ == '__main__':
    a = []
    x = int(input('enter: '))
    hanoi(x)
    print(sum(a))

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql获取当前时间+1天_mysql获取当前时间,前一天,后一天[通俗易懂]

    mysql获取当前时间+1天_mysql获取当前时间,前一天,后一天[通俗易懂]负责的项目中,使用的是mysql数据库,页面上要显示当天所注册人数的数量,获取当前的年月日,我使用的是CURDATE(),错误的sql语句eg:SELECTCOUNT(*)FROMUSERWHEREregisterDate>=CURDATE()ANDregisterDate<CURDATE()+1;虽然获取到的数量在测试环境中是正确的,但在发布到线上的时候,发…

    2022年10月5日
    0
  • phpstorm激活码2021【2021最新】[通俗易懂]

    (phpstorm激活码2021)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    49
  • 三星识别文字_免费文字识别

    三星识别文字_免费文字识别百度AI实战营收官战(成都站),宣告百度OCR免费策略再次升级。百度通用文字识别服务的免费使用次数提升100倍,从每天500次提升至每天50000次;通用文字识别高精度版的免费使用次数提升10倍,从每天50次提升至每天500次。目前业界通常按照接口调用次数收费,单个接口单次调用费从几分钱到几毛钱不等,百度永久免费开放通用文字识别及其他文字识别技术,实实在在为企业节约一笔不菲的支出。现阶段已…

    2022年5月25日
    47
  • HTTP协议的基础

    HTTP协议的基础HTTP协议HTTP协议一、网络基础1、TCP/IP协议族各层作用应用层传输层网络层链路层2、TCP/IP通信传输流3、关系密切的IP、TCP、DNS协议(3次握手)4、URI和URL二、简单的HTTP协议1、通过请求和响应的交换达成通信2、HTTP是一种无状态协议3、HTTP方法4、持久连接keep-alive5、cookie三、HTTP报文2、用于HTTP协议交互的信息称为HTTP报文2、…

    2022年6月24日
    35
  • Java学习之异常篇

    Java学习之异常篇0x00前言计划这几天把JavaSE的基础都给总结完,然后开始我的web部分。0x01异常概念说到异常,第一个联系到的可能就是bug,但是我们需要了解一下异常到底是怎

    2021年12月12日
    47
  • FusionChartsFree的JSP标签开发

    FusionChartsFree的JSP标签开发写一个JSP标签,一个Java文件,一个标签定义,避免重复写好多嵌入FusionChartsFree的代码。第一步:定义标签属性等信息,编写TLD文件;第二步:编写标签处理的代码;第三步:测试标签;第四步:打包发布。关键:TLD文件:12345678910111213…

    2022年7月14日
    15

发表回复

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

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