汉诺塔函数python_帮你轻松理解《汉诺塔》函数
生活随笔
收集整理的這篇文章主要介紹了
汉诺塔函数python_帮你轻松理解《汉诺塔》函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python實現漢諾塔的函數:
def hanoi(n,A,B,C):
if n == 1:
print(A,'-->',C)
else:
hanoi(n-1,A,C,B)
hanoi(1,A,B,C)
hanoi(n-1,B,A,C)
hanoi(3,'A柱子','B柱子','C柱子')
默認情況下:
n是盤子數,A是起始柱,B是中轉柱,C是目標柱
要把A柱上的盤按照漢諾塔規則全部移到C柱上
除了1個盤比較特殊外,大于1個盤基本上可以拆分為三步:
首先是要把C柱空出來放最大的,這就需要利用C柱做中轉柱,把A柱上除最大的那個盤之外,其它的n-1個盤,利用C柱做為中轉,全部從A柱移到B柱上
這種情況下,A是起始柱,C是中轉柱,B是目標柱
move(n-1,A,C,B)
然后再把A柱上最大的那個盤移到C柱,這樣這個最大的盤就在C柱最下面了(這個只有一步)
這種情況下,A是起始柱,B是中轉柱,C是目標柱
move(1,A,B,C)
然后再把B柱上的n-1個盤通過A柱全部移動C柱上。
這種情況下,B柱是起始柱,A是中轉柱,C是目標柱
move(n-1,B,A,C)
這樣去理解的話,這個函數就很容易寫出來了。
其實這個難的不是理解這個函數,而是不知道這個函數前,你能不能通過歸納寫出這個函數。
總結
以上是生活随笔為你收集整理的汉诺塔函数python_帮你轻松理解《汉诺塔》函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最后的勇者t0角色推荐
- 下一篇: 辣的胃痛怎么快速缓解