汉诺塔游戏-慕课网python入门理解

    查看了汉诺塔的游戏规则,首先每次只能移动一个盘子;此外每次移动必须保证小的盘子在大的盘子之上。

   在这里写一下自己的理解,我觉得用3个盘子来演示一遍这个游戏,就能明白了。

   那么现在三根柱子a,b,c;三个盘子1,2,3(1号最小)

    第一步:a --> c(1号盘子移到c柱上) 

    第二步:a --> b(2号盘子移到b柱上) 

    第三步:c --> b(1号盘子从c移到b柱上,因为小盘一定要在大盘之上,所以我们一到三步的目的是要把a柱上最大的3号盘移到c柱上,所以要把c柱空出来,且3号盘上没有其他盘) 

    第四步:a --> c(把3号盘移到c柱上) 

    第五步:b --> a(此时b柱上还有1号和2号盘,先把1号盘移到a柱上) 

    第六步:b --> c(此时b柱上只有一个2号盘,直接移到c柱上) 

    第七步:a --> c(最后一步,把a柱上的1号盘移到c柱上) 完成后,此时c柱上就是1号、2号、3号盘依次从小到大排在c柱上。

     n=3,理解后,可以再试一试4个盘子的移动,很有意思。

def move(n, a, b, c):
    if n==1:
        print a,'-->',c
        return
    move(n-1,a,c,b)
    print a,'-->',c
    move(n-1,b,a,c)
move(3, 'A', 'B', 'C')
move(4,'a','b','c')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值