1个盘 1
2个盘 3
3个盘 7 将前2个看成整体
4个盘 15 将前3个看成整体
方法:
将x上的64个盘借助y移到z
将x上的前63个移到y
将x上的第64个移到z
将y上的前63个移到z
#n个盘子 x出发 z终点
def hanoi(n,x,y,z):
if n==1:
print(x,'--->',z)
else:
#将x上的(n-1)个从x借助z移动到y
hanoi(n-1,x,z,y)
#将x上的第n个从x借助y移动到z
print(x,'--->',z)
#将y上的(n-1)个盘子从y借助x移动到z
hanoi(n-1,y,x,z)
n=int(input('请输入汉诺塔的层数:'))
print('下面是汉诺塔')
hanoi(n,'A','B','C')
def hano(n,x,y,z):
if n>0:
hano(n-1,x,z,y)
print(n,":",x,"-->",z)
hano(n-1,y,x,z)
hano(3,'a','b','c')