[Python3 練習] 005 漢諾塔1
阿新 • • 發佈:2019-02-07
足夠 題目 == 遞歸 一次 info ret 移動 其余
題目:漢諾塔 I
(1) 描述
- 傳說,在世界中心貝拿勒斯(在印度北部)的聖廟外有左中右三根足夠長的柱子(塔),左邊柱子上套著 64 片金片,金片按“上小下大”排,其余兩根是空柱子。僧人們借助中間的柱子將左邊柱子上的金片移動到右邊……
(2) 要求
- 一次只能移動一片
- 金片之間,必須是上小下大,即大金片不能放到小金片上
- 借助中間柱子,將左邊柱子上所有的金片都移到右邊柱子為止
(3) 程序
# 使用遞歸 def hanoi(n, a, b, c): """ n:塔的層數 a:左邊的塔 b:中間的塔 c:右邊的塔 """ if n == 1: print(a, ‘-->‘, c) # 將 a 塔頂層金片移到 c 塔 else: hanoi(n-1, a, c, b) # a 塔的 n-1 層金片借助 c 塔移到 b 塔 print(a, ‘-->‘, c) # 將 a 塔頂層金片移到 c 塔 hanoi(n-1, b, a, c) # b 塔的 n-1 層金片借助 a 塔移到 c 塔 return None hanoi(64, ‘A‘, ‘B‘, ‘C‘) # A 塔的 64 層金片借助 B 塔移動到 C 塔
[Python3 練習] 005 漢諾塔1