小样的学习博客11——Python之递归(汉诺塔)

小样的第十一次学习博客——Python之递归(汉诺塔)

简述:(转载自其他博主)
存在三根相同并排的柱子(起始柱,目标柱,辅助柱),第一根柱子上面有从小到大依次排列的n个盘子,大盘子在下面,小盘子在上面,现在需要将这n个盘子从起始柱移动到目标柱上。

    移动的规则是:①每次只能移动一个盘子,而且只能移动柱子上最顶部的圆盘;②大盘子不能放在小盘子上面。

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/i129percent/article/details/132638750

原理,转载的这篇博客讲的很清楚
但我想做一些补充

先上代码

# 递归 汉诺塔
step=0
def hanoi(count,start,target,auxiliary):
    global step
    if count==1:
        step+=1
        print("第{}次:{}->{}".format(step,start,target)) #只有1个圆盘,直接从起始柱移动到目标柱
    else:
        hanoi(count-1,start,auxiliary,target) #把count-1个圆盘从起始柱移动到辅助柱
        step+=1
        print("第{}次:{}->{}".format(step,start,target)) #把第count个圆盘从起始柱移动到目标柱
        hanoi(count-1,auxiliary,target,start) #把辅助柱上的count-1个圆盘移动到目标柱上
hanoi(4,'a','c','b')

首先我们一定要搞清楚这个函数首部,
hanoi(count, start, target, auxiliary),我们先把这个函数首部换成 hanoi(count,a,b,c) 这个函数的作用是把a柱上的count个圆盘移动到b柱,不涉及c柱
那么刚刚这个函数
hanoi(count, start, target, auxiliary)的作用就是把起始柱上的count个圆盘移动到目标柱,不涉及辅助柱
hanoi(count, start, auxiliary, target)的作用就是把起始柱上的count个圆盘移动到辅助柱,不涉及目标柱
hanoi(count, auxiliary, target, start)的作用就是把辅助柱上的count个圆盘移动到目标柱,不涉及起始柱
还有
每一次print也代表一次移动
这下大家应该能看懂代码中的注释了

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值