溫馨提示×

python漢諾塔遞歸代碼怎么寫

小億
100
2023-10-22 09:43:18
欄目: 編程語言

你可以使用遞歸來實現漢諾塔問題的解決。下面是一個示例的Python代碼:

def hanoi(n, source, target, auxiliary):
    if n > 0:
        # 先將前 n-1 個盤子從源柱子移動到輔助柱子
        hanoi(n-1, source, auxiliary, target)
        # 將最底下的盤子從源柱子移動到目標柱子
        print(f"Move disk {n} from {source} to {target}")
        # 再將之前移動到輔助柱子的 n-1 個盤子移動到目標柱子
        hanoi(n-1, auxiliary, target, source)

# 測試代碼
hanoi(3, "A", "C", "B")

在這段代碼中,hanoi函數是遞歸函數,它接受四個參數:n表示盤子的數量,source表示源柱子,target表示目標柱子,auxiliary表示輔助柱子。首先,我們檢查盤子的數量是否大于零,如果是,就進行遞歸。

遞歸的過程包括三個步驟:

  1. 將前 n-1 個盤子從源柱子移動到輔助柱子。這一步使用遞歸調用hanoi(n-1, source, auxiliary, target)來實現。
  2. 將最底下的盤子從源柱子移動到目標柱子。這一步僅涉及一次移動操作。
  3. 將之前移動到輔助柱子的 n-1 個盤子移動到目標柱子。這一步使用遞歸調用hanoi(n-1, auxiliary, target, source)來實現。

你可以通過調用hanoi函數并傳遞正確的參數來測試代碼。在上面的示例代碼中,我們將3個盤子從柱子A移動到柱子C,使用柱子B作為輔助柱子。程序會輸出每一步的移動操作。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女