64层的汉诺塔问题究竟需要几步才能完成?
汉诺塔
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。(来自搜狗百科)
由来
法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。(来自搜狗百科)
演示
用Python来演示一下:
代码
count = 0def hanoi(n, a, b, c):global countif n == 1:count += 1else:hanoi(n - 1, a, c, b)hanoi(1, a, b, c)hanoi(n - 1, b, a, c)hanoi(n, 'A', 'B', 'C')
print(count)
n | count |
---|---|
1 | 1 |
2 | 3 |
3 | 7 |
4 | 15 |
5 | 31 |
… | … |
20 | 1048575 |
可以看出count = 2n-1,当n = 64时,count = 264 - 1 = 18,446,744,073,709,551,615,假如一秒一步,平年31536000秒,闰年31622400秒,也就是说需要584,554,049,253.85542985900539443733年也就是5845.54亿年才能完成 ,也许那时人类早就不在太阳系了。
64层的汉诺塔问题究竟需要几步才能完成?相关推荐
- 信息学奥赛一本通(1205:汉诺塔问题)
1205:汉诺塔问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 19568 通过数: 7240 [题目描述] 约19世纪末,在欧州的商店中出售一种智力 ...
- 汉诺塔问题(信息学奥赛一本通-T1205)
[题目描述] 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移 ...
- 18938 汉诺塔问题
18938 汉诺塔问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 Description 汉诺塔(Tower of Hanoi),又称 ...
- 手撕“汉诺塔算法”之详细图解
hello,你好呀,我是灰小猿,一个超会写bug的程序猿, 今天和大家分享一个递归经典算法案例---"汉诺塔". 汉诺塔问题回顾 汉诺塔(Tower of Hanoi)源于印度传说 ...
- 一本通1205:汉诺塔问题(含严格证明)
[题目描述] 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移 ...
- 深度理解递归,手撕经典递归问题(汉诺塔,青蛙跳台阶),保姆级教学。
目录 序言: 一.函数递归( recursion) 二.递归的两个必要条件 三.递归小问题 (1)接受一个整型值(无符号),按照顺序打印它的每一位 (2)编写函数不允许创建临时变量,求字符串的长度(利 ...
- C语言--实现汉诺塔【图文讲解,附代码】
目录 (1)什么是汉诺塔 (2)汉诺塔打印步骤 (3)如何用C语言实现汉诺塔 (4)实现代码 (1)什么是汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔.源自印度古老传说的一个游戏,大 ...
- 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
汉诺塔问题 设f(n)为移动n层的汉诺塔的解,则整个过程其实分为三步: 把n-1层移到第二个上面去(花费f(n-1)) 把最大的移到第三个柱子上面去(花费1) 把n-1层移动到第三个柱子上去(花费f( ...
- 汉诺塔问题详解 递归实现 C语言
目录 一.前言 二.游戏规则 三.思路讲解 四.完整代码 五.最终结果展示 一.前言 汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子, 其中一根柱子 ...
最新文章
- Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
- 缓存之EHCache(二)
- java中生成不重复随机的数字
- Java反射详解_java反射详解
- 存储维护和服务器的区别,存储服务器和普通服务器区别是什么? 你想知道吗服务器类型一般是什么...
- Unity(TransForm)
- Android SDK Setup如何使用?
- 【ubuntu如何卸载mysql(ubuntu卸载mysql的具体方法)】
- 林轩田《机器学习基石》笔记
- 关于项目文档管理,现在开始就别揪心了!DOClever让你的项目文档纵享丝滑!
- Unity人物动画扩展
- 微信公众服务号如何快速申请注册并认证开通支付功能
- 电脑三种方式连接打印机
- 戴尔服务器r720矩阵卡无响应,戴尔r720阵列卡驱动
- Springboot毕设项目基于Vue和Springboot的会议室管理系统hbb9kjava+VUE+Mybatis+Maven+Mysql+sprnig)
- logisim 快速加法器设计实验报告_数电课程实验一二
- PMP培训费和考试费
- oracle从入门到跑路
- Java使用Spire.Pdf或Aspose-Words实现Word转换Pdf在Linux服务器上的中文乱码问题
- 为了网络安全被束缚的无人机背后的故事!
热门文章
- socket局域网聊天demo
- 【学习总结】Apsara Clouder云计算技能认证:云服务器基础运维与管理+思维导图
- TSN(Temporal Segment Networks)算法笔记
- 香蕉皮的妙用(想歪的去面壁)(不管有没有用,先记下再说)
- 一行python代码画粑粑_如何阅读《JavaScript高级程序设计》(一)
- Spring Boot教程(十四)快速入门
- Spring Boot教程(二十)开发Web应用(1)
- 计算机在开机后显示器在显示桌面,电脑开机后显示屏一片空白
- 画世界怎么用光影_水彩画中的光与影/世界绘画经典教程
- java将“2018年4月8日”转换成正常日期:2018年04月08日