共計 668 個字符,預計需要花費 2 分鐘才能閱讀完成。
你可以使用遞歸來實現漢諾塔問題的解決。下面是一個示例的 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
表示輔助柱子。首先,我們檢查盤子的數量是否大于零,如果是,就進行遞歸。
遞歸的過程包括三個步驟:
- 將前 n-1 個盤子從源柱子移動到輔助柱子。這一步使用遞歸調用
hanoi(n-1, source, auxiliary, target)
來實現。 - 將最底下的盤子從源柱子移動到目標柱子。這一步僅涉及一次移動操作。
- 將之前移動到輔助柱子的 n-1 個盤子移動到目標柱子。這一步使用遞歸調用
hanoi(n-1, auxiliary, target, source)
來實現。
你可以通過調用 hanoi
函數并傳遞正確的參數來測試代碼。在上面的示例代碼中,我們將 3 個盤子從柱子 A 移動到柱子 C,使用柱子 B 作為輔助柱子。程序會輸出每一步的移動操作。
丸趣 TV 網 – 提供最優質的資源集合!
正文完