1. 程式人生 > >漢諾塔問題遞迴求解(python)

漢諾塔問題遞迴求解(python)

漢諾塔問題遞迴求解(python)


漢諾塔(Hanoi)問題

古代有一個梵塔,塔內有三個座x,y,z壇,x座上有64個盤子,盤子大小不等,大的在下,小的在上。有一個和尚想把這64個盤子從x座移到z座,但每次只能允許移動一個盤子,並且在移動過程中,3個座上的盤子始終保持大盤在下,小盤在上。在移動過程中可以藉助y座進行過渡。

def hanoi(n,x,y,z):
    '遞迴從x把所有盤子藉助y移到z上'

    global count
    if n == 1: # 直接完成的狀態
        print(x,'-->'
,z) # 表示移動 count += 1 else: # 需要分解,分析方法是先把三個步驟每一個都看成“大的完整的”一步,思想上不要再拆下去 hanoi(n-1,x,z,y) # 1、把上邊所有盤子從x藉助z移到y上 print(x,'-->',z) # 2、把最底層那一個盤子移到z上 count += 1 hanoi(n-1,y,x,z) # 3、把上邊所有盤子從y藉助x移到z上 while 1: count = 0   # 步數記錄 n = int(input("請輸入漢諾塔層數:"
)) hanoi(n,'x','y','z') print(count)