汉诺塔

题目背景:A柱上有n个碟子“从小到大“的尺寸叠在一起的碟子,B、C柱子上为空,要把A柱子上的碟子移到C柱,并保证在移动过程中和最终结果,每个柱子上的碟子尺寸从上到下是从小到大的。

1个碟子:A--->C

2个碟子:A--->B,A--->C,B--->C  

3个碟子:A--->C,A--->B,C--->B,A--->C,B--->A,B--->C,A--->C

规律:1、将A柱上的前n-1个碟子通过C柱移到B柱,(因为只有最大的碟子放在C柱后,前n-1个碟子才能移到C柱),所以我们需要把前n-1个碟子移到B柱。(A--->C之前的操作)

           2、将第n个碟子移到C柱。(A--->C)

           3、将B柱上的n-1个碟子又通过A柱移到C柱,这时的B相当于之前的A柱,A柱相当于之前的B柱,C柱上都是比较大的碟子,所以A、B柱的碟子向其移时是没有影响的,相当于又回到了第一步。(A--->C之后的操作)

def hannuota(n,A,B,C):
    if n >= 1:
        hannuota(n-1,A,C,B)
        print(A + "--->" + C)
        hannuota(n-1,B,A,C)
hannuota(3,"A","B","C")

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值