中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

python漢諾塔遞歸代碼怎么寫

小億
84
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
兴化市| 迭部县| 绥德县| 白河县| 富顺县| 霍州市| 增城市| 淳安县| 绵竹市| 鄯善县| 呼伦贝尔市| 宽甸| 柘荣县| 平昌县| 兴海县| 廊坊市| 青田县| 上蔡县| 偃师市| 浦县| 安福县| 南城县| 昔阳县| 突泉县| 吉木乃县| 道真| 扶绥县| 丹阳市| 酉阳| 克山县| 鸡泽县| 新竹县| 上饶县| 雷山县| 光山县| 洛南县| 乡宁县| 巨野县| 察隅县| 渭南市| 社会|