本文實例為大家分享了python求解漢諾塔游戲的具體代碼,供大家參考,具體內容如下
一、問題定義
百度百科定義:漢諾塔(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。據說大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照從小到大順序摞著64片黃金圓盤。大梵天命令婆羅門借助其中一根柱子,把64片黃金圓盤重新擺放到第三個根柱子上。并且規定,在小黃金圓盤上不能放大的黃金圓盤,在三根柱子之間一次只能移動一個圓盤。
例如,如果黃金圓盤只有3片,則為了滿足游戲規則,那么必須按照如下圖所示的8個步驟完成:
二、代碼實現
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 將n個盤子借助y柱從x柱移動到z柱 def hanoi(n, x, y, z): count = 0 if n = = 1 : # 遞歸出口 print (x, ' --> ' , z) return 1 else : # 將前n - 1個盤子借助z柱從x柱移動到y柱上 count + = hanoi(n - 1 , x, z, y) # 遞歸調用 # 將最底下的1個盤子從x柱移動到z柱上 count + = hanoi( 1 , x, y, z) # 將n - 1個盤子借助x柱從y柱移動到z柱上 count + = hanoi(n - 1 , y, x, z) # 遞歸調用 return count def main(): hanoi_level = input ( "請輸入漢諾塔層數:" ) print ( "總共移動次數為%d" % hanoi( int (hanoi_level), 'X' , 'Y' , 'Z' )) if __name__ = = '__main__' : main() |
當黃金圓盤為4層時,代碼的輸出結果為:
請輸入漢諾塔層數:4
X --> Y
X --> Z
Y --> Z
X --> Y
Z --> X
Z --> Y
X --> Y
X --> Z
Y --> Z
Y --> X
Z --> X
Y --> Z
X --> Y
X --> Z
Y --> Z
總共移動次數為15
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/weixin_37780776/article/details/107168070