在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
在学习Python的时候,大家难免会遇到汉诺塔问题,这是在学习其他编程语言也绕不过去的经典问题之一。本文就带大家了解什么是汉诺塔问题,并为大家解决Python中的此类问题。感兴趣的小伙伴就赶紧看下去吧!
1、什么是汉诺塔问题?
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
2、汉诺塔问题在Python中可以抽象如下:
(1)3根圆柱A,B,C,其中A上面串了n个圆盘。
(2)这些圆盘从上到下是按从小到大顺序排列的,大的圆盘任何时刻不得位于小的圆盘上面。
(3)每次移动一个圆盘,最终实现将所有圆盘移动到C上。
3、利用Python语言接近自然语言的特性,开发者可以更容易的将递归算法翻译成程序语句,需要的代码量很小。汉诺塔问题的解决步骤用语言描述很简单,仅三步:
A,B,C三个圆柱,分别为初始位,过渡位,目标位,设A柱为初始位,C位为最终目标位
(1)将最上面的n-1个圆盘从初始位移动到过渡位
(2)将初始位的最底下的一个圆盘移动到目标位
(3)将过渡位的n-1个圆盘移动到目标位
对于递归算法中的嵌套函数f(n-1)来说,其初始位,过渡位,目标位发生了变化
具体代码如下:
def move(n,a,b,c): #n为圆盘数,a代表初始位圆柱,b代表过渡位圆柱,c代表目标位圆柱
if n==1:
print(a,'-->',c)
else:
move(n-1,a,c,b) #将初始位的n-1个圆盘移动到过渡位,此时初始位为a,上一级函数的过渡位b即为本级的目标位,上级的目标位c为本级的过渡位
print(a,'-->',c)
move(n-1,b,a,c) #将过渡位的n-1个圆盘移动到目标位,此时初始位为b,上一级函数的目标位c即为本级的目标位,上级的初始位a为本级的过渡位
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
孩子学Python入门书籍推荐
随着山东将Python编程语言加入小学信息技术教材,Python的学习也有低龄化的趋势。那么孩子学python要看什么入门书籍呢?小编的建议是,最好挑选能引起孩子兴趣,深入浅出讲解Python的书。
9770
2019-08-21 20:54:09
Python基础语法学习之变量与赋值
近几年Python飞速发展,开始学习Python的人群不在仅仅局限于编程开发者,许多其他行业的从业者也开始将Python作为自己的职业技能。本文仍然是针对零基础的初学者,继续学习Python的基础语法——变量与赋值。主要内容包括变量和赋值的概念、代码演示、变量的特点和命名规范以及=符号。
5091
2020-04-16 10:53:42
Python好学吗?要学多久?
许多想要学习编程语言的小白都会问这样一个问题,Python好学吗?难不难?老实说零基础学习任何编程语言都是有一定难度的。但是Python简单易懂的语法使得学习的难度大大降低了,因此Python可以说对新手最友好的编程语言。那么Python要学多久呢?根据博学谷的课程安排,即便是零基础的学员,半年以内也能熟练掌握Python。
6266
2020-07-01 12:06:53
数据分析需要掌握哪些知识?
现在数据分析那么火,想成为一名合格的数据分析师,需要掌握哪些知识?想要知道数据分析师需要具备的技能知识储备,我们首先要了解一下数据分析师主要做什么,工作的流程是什么。
4608
2020-08-14 14:43:14
自学Python半年能学出来吗?能找工作吗?
自学Python分两种情况,零基础和有编程基础,零基础想要自学Python半年达到想找工作的水平比较难,零基础的人群参加系统的Python培训班至少5-6个月的时间才能具备相关岗位的专业技能;若有一定的编程基础想拓宽专业技能,有编程思维那么自学Python完全是没有问题的。
5060
2021-06-02 13:59:12