当前位置:首页 » 编程语言 » python汉诺塔算法

python汉诺塔算法

发布时间: 2022-07-08 06:44:17

A. python利用递归解决汉诺塔问题,求大神解释一下代码

这是一个典型的递归程序
当只有一层的时候,直接把x放到z上结束
当大于1层的时候,先把x和z放到y上,然后继续递归
把y放到x上,然后放到z上,结束处理

B. python汉诺塔非递归

python汉诺塔非递归,运用list和function知识的解答

无论stack还是recursion都是从汉诺塔的原理去解决问题,但如果已经想清楚汉诺塔的原理,其实只用把答案print出来就行了

先找规律:

一层:A-->C


两层:A-->B

-------

A-->C

-------

B-->C


三层:A-->C

A-->B

C-->B

-------

A-->C

-------

B-->A

B-->C

A-->C


注意到n层汉诺塔有(2**n) - 1 个步骤,而中间的一步(两个分割线之间)都是“A-->C”,中间的这一步将这一层汉诺塔的解分为上下两个部分

仔细观察,上面一部分是将上一层的解中所有的B,C交换,下面一部分是将上一层的解中所有的A,B交换

例如第二层是:

A-->B

A-->C

B-->C

第三层上部分就将第二层的解的C换成B,B换成C,即得出:

A-->C

A-->B

C-->B

第三层下部分就将第二层的解的A换成B,B换成A,即得出:

B-->A

A-->C

C-->B

这个规律同样适用于第一层,和以后的所有层

然后就好办了,代码如图:

代码

其中convertAB,convertBC就是AB交换,BC交换的函数,这两个函数可以自己定义,用中间变量即可

C. python的汉诺塔问题

把n-1的盘看成一个整体。汉诺塔的操作:n-1的盘全部从x移动到y,最后一个盘子从x移动到z,再把n-1的盘从y移动到z。大概这个意思。

D. python解决汉诺塔问题

解汉诺塔最简单的做法就是递归:

类似如何将大象装进冰箱:1)将冰箱门打开;2)把大大象放进去;3)把冰箱门关上……

我们将所有的盘都在同一个杆上从大到小排列视为【完美状态】,那么,目标就是将最大盘片为n的完美状态从a杆移到b杆,套用装大象的思路,这个问题同样是三步:

1)把n-1的完美状态移到另一个杆上;

2)把n移到目标杆上;

3)把n-1的完美状态移到目标杆上。

如下:

E. 利用python编程解决汉诺塔问题,例如移动64层汉诺塔需要多少时间

那么好多人会问64个圆盘移动到底会花多少时间?那么古代印度距离现在已经很远,这64个圆盘还没移动完么?我们来通过计算来看看要完成这个任务到底要多少时间?
我们首先利用数学上的数列知识来看看F(n=1)=1,F(n=2)=3,F(n=3)=7,F(n=4)=15……F(n)=2F(n-1)+1;
我们使用数学归纳法可以得出通项式:F(n)=2^n-1。当n为64时F(n=64)=18446744073709551615。
我们假设移动一次圆盘为一秒,那么一年为31536000秒。那么18446744073709551615/31536000约等于584942417355天,换算成年为5845.54亿年

热点内容
苹果X相当安卓的什么档次的 发布:2025-03-12 21:15:28 浏览:769
旋挖施工造浆如何配置 发布:2025-03-12 21:15:26 浏览:788
asp加密技术 发布:2025-03-12 21:13:53 浏览:219
三星电视如何升级安卓系统 发布:2025-03-12 21:12:49 浏览:23
androidso库调用 发布:2025-03-12 21:08:59 浏览:805
如何清理安卓手机听筒里的灰 发布:2025-03-12 20:59:37 浏览:224
网络缓存级别那个最好 发布:2025-03-12 20:56:34 浏览:561
苹果手机如何蓝牙给安卓传输文件 发布:2025-03-12 20:55:01 浏览:345
百度电脑硬件如何配置 发布:2025-03-12 20:53:30 浏览:754
创建临时表sql 发布:2025-03-12 20:41:32 浏览:722