Python 实现汉诺塔

汉诺塔可以说是编程语言中递归用法的经典案例

类似的编程案例有上楼梯:每次只能走一阶或两阶,一共有多少层走法?
这种类型的题目,主要的突破点在于 倒退法!

当我们采用常规的思路去寻求突破时,虽然每层只有一种或两种选择,但是不同层间的结合却是一个庞大的数字,正常人无法一一列举,所以采用枚举法无疑是自寻死路,会感觉这就是的无底洞。

但是当我们站在终点去倒退的时候,给我们的选择也是两种,具体的说是两类,因为你不需要考虑之前的结合方法,你只需要考虑你当前只要选择一次就能完成整个任务,所以此时的处理就变成了二选一。
当你完成了此时的目的时,将你此时的位置设置为终点,然后倒退上一步的选择,这时候你即不需要考虑后面的操作(上一步已经完成),也不需要考虑在此之前的众多步骤,还是回归到了二选一的环节。
按照这种思路一直循环下去,直到完成此题。

附上python的代码:
def deal(n,x,y,z):
if n==1:
print(x,’->’,z)
else:
deal(n-1,x,z,y)
print(x,’->’,z)
deal(n-1,y,x,z)

	deal(3,‘X’,'Y','Z')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值