关于Python汉诺塔的理解

本文是一位初学者对Python汉诺塔问题的理解,通过解析基本原理和递归思想,详细阐述了汉诺塔问题的解决过程。代码实现中,a、b、c代表三根柱子,递归调用函数move()完成盘子的移动。在递归过程中,柱子角色不断互换,最终实现所有盘子的移动。
摘要由CSDN通过智能技术生成

本人菜鸟一枚,初学Python,看完汉诺塔的代码很是迷惑,记录一下自己花了几天得出的自认为比较合理的理解,当然,在大神目前不过是班门弄斧,以下是我的理解,也算是我的整理:
首先汉诺塔的基本原理,大家应该都懂,大概就是:有三根柱子,第一根柱子上有若干个盘,由大到小往上叠,要求借助其中一根柱子,把第一根柱子上的盘全部移过去另外一根柱子,移动过程要求大盘在下面,小盘在上面。

而代码的实现用递归,也就是想办法让这个移动的过程不断重复相同的几个动作,你可以把这个问题倒着来想,也就是说,把最下面那一个盘子成功移动到第三根柱子(这个可以自己选,移动到第二根也可以)那么这一步的上一步,一定是这个移动的盘子上面的所有盘子,既n-1个盘子,在第二根柱子上,然后这个问题又可以变成把n-1个盘子的最下面那个盘子成功移动到三根柱子,这样的话,它的上一步就是n-2根柱子在第一根柱子上,所以和上一步是重复的,以此类推。
以下是Python的代码:
在这里插入图片描述
其中a,b,c代表三根柱子,注意:A,B,C和a,b,c有点不一样,因为传进去的A,B,C位置固定,对应着函数里面的a,b,c,但是函数在递归调用的时候它们的目标不一样,所以顺序不一样,函数大致可以理解为move(盘数,当前所在柱子,借助柱子,目标位置柱子),也就是说,A一直都是传给当前所在柱子,B一直都是传给借

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值