【python】hanio【汉诺塔】

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)
        

  

原文地址:https://www.cnblogs.com/vmkash/p/8098807.html