宇宙都要毁灭了你还在玩汉诺塔?(动画讲解汉诺塔问题)

CSDN话题挑战赛第2期
参赛话题:学习笔记

??工具分享

  1. 刷题: 牛客 leetcode
  2. 笔记软件:有道云笔记
  3. 画图软件:Xmind(思维导图) diagrams(流程图)

 

 

汉诺塔解法

 

动画讲解递归思路

我们从圆盘个数上,从少到多,来分析一下解决方法,一下我们用n来表示圆盘个数

我们用A B C或者起始柱 辅助柱 目标柱 来表示柱子

n = 1时

n = 3

同样的,3层的哈诺塔也已经在n = 3的时候演示。

 

 

类推:无论多少个圆盘,就能给他分解成三步,就类似于把大象装进冰箱

 

 

递归思路:有n个圆盘需要从A(起始柱)移到C(目标柱),借助B(辅助柱)

可以分解陈有n -1圆盘从A移动到B,底盘从A移动到C,n-1个圆盘从B移动到C

特别注意,进行多圆盘移动的时候,是需要辅助柱的

 

代码实现汉诺塔

 

递归的优缺点

优点:

非常明显,这种大事化小的思维方式,可以大大缩减我们的代码量,便于理解理解整体逻辑

缺点:

  1. 与现实生活的思维方式相差较大,不容易想
  2. 递归程度太深会造成栈溢出(例如死递归)
  3. 部分题目用递归实现特别低效(例如斐波那契)

 

64层汉诺塔等于宇宙毁灭h4>

已经有人开玩笑说:等你把64层汉诺塔解完,宇宙的毁灭了。

其实这也是可能的,前提是那个人是一个永生的人。

 

百度百科上面查询到,28亿宇宙将灭亡,咱们也不是什么大科学家,姑且不谈其真假性,我们来计算一下人解完64层需要花多少时间。

首先我们计算一下n层汉诺塔,需要移动圆盘多少次p>

咱们使用上面的程序来找找规律,当然如果你是一个数学大佬,也可以使用数学知识来计算。

n = 3–7次

找规律我们不难发现,n层汉诺塔需要移动圆盘 2的n次方减1次,如果说64层汉诺塔

那就需要移动圆盘2^64 – 1次,即1844.67亿亿

如果一个人移动一次圆盘需要1秒钟,也需要1844.67亿亿秒,很明显,宇宙大人早就去世了。

??OK,咱们折起就讲到这里,希望大家能够听懂汉诺塔问题,咱们下期见!

点赞

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览115933 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月3日
下一篇 2022年10月3日

相关推荐