def hanoi(n,x,y,z): if n==1: print(x,'-->',z) else: hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y print(x,'-->',z)#将最后一个盘子从x移动到z上 hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上 n=int(input('请输入汉诺塔的层数: ')) hanoi(n,'x','y','z')
def hanoi(n,x,y,z): if n==1: print(x,'-->',z) tmp=x[len(x)-1] x.remove(tmp) z.append(tmp) print(x) print(y) print(z) else: #----------------------------------------------- hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y #----------------------------------------------- print(x,'-->',z)#将最后一个盘子从x移动到z上 if len(x)>1: tmp=x[len(x)-1] #print(tmp) x.remove(tmp) z.append(tmp) print(x) print(y) print(z) print("======>") #----------------------------------------------- hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上 def getInitList(n): mylist=[] for i in range(n): mylist.append(i+1) mylist.reverse() return mylist n=int(input('请输入汉诺塔的层数: ')) xlistInit=getInitList(n) xlist=xlistInit[:] xlist.insert(0,'x') ylist=['y'] zlist=['z'] hanoi(n,xlist,ylist,zlist)