【Python全栈06】汉诺塔

本文介绍了汉诺塔问题的基本概念,并通过Python代码详细解释了递归算法的实现过程。通过具体实例演示了如何将不同数量的盘子从一个柱子移动到另一个柱子上,同时遵循汉诺塔游戏的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    首先补充两个没碰到过的函数。

eval()和exec()函数

    作用:

        eval():将一个字符串当作代码来执行并返回执行结果。

        exec():将一个字符串当作代码来执行但不返回执行结果。


汉诺塔

cnt = 0
def hano(n,a,b,c,):
    global cnt
    if(n==1):
        cnt+=1
        print("第",cnt,"次移动:",a,"--",c)
    else:
        hano(n-1,a,c,b)
        hano(1,a,b,c)
        hano(n-1,b,a,c)
hano(4,'A','B','C')

结果如下:


    汉诺塔其实理解了也很简单的。首先要理解一下思路,其实代码中每一次n==1的时候都是我们成功将大盘放到C盘的时候。比如说,我们有四个盘,第一次执行到n==1时,我们将第四个盘成功移动到c盘;第二次n==1时,我们将第三个盘成功移动到c盘......而当n!=1是,我们要做3步(以四个盘为例):假设我们已经将第四个盘(最大盘,我们叫它4号盘)移动到C盘,此时A盘空着,B盘上有剩余3个盘,1.我们要将B盘三个盘的上面两个盘搬到A盘-->hano(n-1,a,c,b),2.将B盘上的3号盘移动到C盘-->hano(1,a,b,c),3.将A盘上的两个盘移动到C盘-->hano(n-1,b,a,c).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值