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

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

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

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

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

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

原文链接:https://blog.youkuaiyun.com/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个

红包金额最低5元

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

抵扣说明:

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

余额充值