成都网站建设设计

将想法与焦点和您一起共享

汉诺塔函数python,汉诺塔函数c语言

如何理解这段汉诺塔python代码中的递归?

递归方法有些时候是不太好理解,不过递归的意义就是把解决问题n变成解决n-1的问题,最终变成解决1个问题。

创新互联公司-专业网站定制、快速模板网站建设、高性价比新郑网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式新郑网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖新郑地区。费用合理售后完善,十年实体公司更值得信赖。

假设有n个盘子,从上到下依次编号,最下面的盘子编号是大写的N。托盘分别是x,y,z。要把所有盘子从x移动到z。

前面几行代码就不解释了,很容易理解。

第五行,如果只有一个盘子,就直接从x移动到z。

第七行,如果不只一个盘子,先把上面n-1个盘子从x移动到y。

第八行,再把N号盘子从x移动到z。

第九行,再把刚才那n-1个盘子从y移动到z。

至于那n-1个盘子是怎么移动的,再次调用这个函数,把问题变成n-2个盘子加1个盘子的问题。

关于python递归函数实现汉诺塔

仔细看一下 5-7行调用 move 时候的参数顺序, 不是你说的那样没有变:

#5 的含义是将 A 上的前 n-1 个移动到 B

#6 : 将 A 最后一个移动到 C

#7: 将 B 上的 n-1 (即#5 从 A 移动过来的 n-1) 个移动到 C

python解决汉诺塔问题?

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

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

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

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

2)把n移到目标杆上;

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

如下:


网站名称:汉诺塔函数python,汉诺塔函数c语言
网站链接:http://chengdu.cdxwcx.cn/article/dsiigde.html