首先补充两个没碰到过的函数。
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).