汉罗塔问题_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)=2n−1
比如我要移动64个罗盘:
f ( 64 ) = 2 64 − 1 f(64) = 2^{64} – 1 f(64)=264−1
那么我们把不同罗盘数量的移动次数相加:

#!/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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的异或_java中的异或

    java的异或_java中的异或一、异或介绍异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。性质1、交换律2、结合律(即(a^b)^c==a^(b^c))3、对于任何数x,都有x^x=0,x^0=x4、自反性AXORBXORB=AXOR0=A二、异或使用异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A^B^B…

    2022年10月4日
  • oracle 拉链表算法,拉链表设计算法「建议收藏」

    oracle 拉链表算法,拉链表设计算法「建议收藏」在企业中,由于有些流水表每日有几千万条记录,数据仓库保存5年数据的话很容易不堪重负,因此可以使用拉链表的算法来节省存储空间。1.采集当日全量数据存储到ND(当日)表中。2.可从历史表中取出昨日全量数据存储到OD(上日数据)表中。3.用ND-OD为当日新增和变化的数据(即日增量数据)。两个表进行全字段比较,将结果记录到tabel_I表中4.用OD-ND为状态到此结束需要封链的数据。(需要修改…

    2022年10月10日
  • Flowable 6.7.0版本新功能特性

    Flowable 6.7.0版本新功能特性Flowable6.7.0版本主要增强的是BPM异步功能:1、实现了全局锁定机制,以更好地支持在具有多个Flowable引擎的设置中使用异步执行器2、添加了对多实例变量聚合的支持3、当多实例是一个自动步骤或一系列自动步骤时,为异步多实例使用添加了一个优化标志。如果设置,引擎将大大降低资源消耗,并删除乐观锁定异常,通常会提高性能4、从Task监听器抛出的异常不再包含在FlowableException中5、在此版本中,已升级到SpringBoot2.5.4和Spri

    2022年5月22日
  • 不同宿主机docker 通信_如何设置同网段IP

    不同宿主机docker 通信_如何设置同网段IP依赖包net-toolsiproute2bridge-utilsgitcurl权限需要在root下执行脚本dnet.shj脚本内容#likebr0要创建的桥接设备名BRNAME=$1#likeeth0要矫健的网络接口名IFNAME=$2#192.168.1.2/24当前主机IPLOCALIP=$3#192.168.1.1当前主机…

    2022年8月20日
  • php中利用header设置content-type和常见文件类型的content-type

    php中利用header设置content-type和常见文件类型的content-typephp中利用header设置content-type和常见文件类型的content-type在PHP中可以通过header函数来发送头信息,还可以设置文件的content-type,下面整理了一些常见文件类型对于的content-type值。部分header头参考:http://www.lai18.com/content/433566.html//aut

    2022年8月24日
  • linux menuconfig搜索,linux系统menuconfig解析

    linux menuconfig搜索,linux系统menuconfig解析在对linux进行编译,常用的命令是makemenuconfig,使用图形界面来对整个系统进行裁剪;这里主要就makemenuconfig的执行过程进行解析。介绍跟makemenuconfig这个命令相关的文件,包括三类,包括.config,Kconfig,Makefile。为什么不说三个,而说三类呢?因为Kconfig和Makefile是配合使用的,在很多的子目录都存在,而.config只…

    2022年5月30日

发表回复

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

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