經典遞歸算法漢諾塔分析:
- 當A柱子只有1個盤子,直接A --> C
- 當A柱子上有3個盤子,A上第一個盤子 --> B, A上最后一個盤子 --> C, B上所有盤子(1個) --> C
- 當A柱子上有那個盤子,A上n-1個盤子 --> B,A上最后一個盤子 --> C, B上所有盤子(n-1個)--> C 規律:
- 當有1個盤子時,A(1) --> C
- 當有n個盤子時,A(n-1)--> B, A(1)--> C, B(n-1) --> C
def move(n, a, b, c):
if n == 1:
print('%s --> %s' % (a, c)) # 只有1個盤子,A --> C
else:
move(n-1, a, c, b) # 有n個盤子,借助於C,A(n-1) --> B
move(1, a, b, c) # 有n個盤子,A(1) --> C
move(n-1, b, a, c) # 有n個盤子,借助於A,B(n-1) --> C