python求解漢諾塔游戲
本文實例為大家分享了python求解漢諾塔游戲的具體代碼,供大家參考,具體內(nèi)容如下
一、問題定義
百度百科定義:漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具。據(jù)說大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照從小到大順序摞著64片黃金圓盤。大梵天命令婆羅門借助其中一根柱子,把64片黃金圓盤重新擺放到第三個根柱子上。并且規(guī)定,在小黃金圓盤上不能放大的黃金圓盤,在三根柱子之間一次只能移動一個圓盤。
例如,如果黃金圓盤只有3片,則為了滿足游戲規(guī)則,那么必須按照如下圖所示的8個步驟完成:

二、代碼實現(xiàn)
# 將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(tǒng)柱上 count += hanoi(n - 1, x, z, y) # 遞歸調(diào)用 # 將最底下的1個盤子從x柱移動到z柱上 count += hanoi(1, x, y, z) # 將n - 1個盤子借助x柱從y柱移動到z柱上 count += hanoi(n - 1, y, x, z) # 遞歸調(diào)用 return countdef main(): hanoi_level = input('請輸入漢諾塔層數(shù):') print('總共移動次數(shù)為%d' % hanoi(int(hanoi_level), ’X’, ’Y’, ’Z’))if __name__ == ’__main__’: main()
當(dāng)黃金圓盤為4層時,代碼的輸出結(jié)果為:
請輸入漢諾塔層數(shù):4X --> YX --> ZY --> ZX --> YZ --> XZ --> YX --> YX --> ZY --> ZY --> XZ --> XY --> ZX --> YX --> ZY --> Z總共移動次數(shù)為15
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python中文本字符處理的簡單方法記錄2. Python基于requests庫爬取網(wǎng)站信息3. Python-openpyxl表格讀取寫入的案例詳解4. PHP laravel實現(xiàn)導(dǎo)出PDF功能5. ASP基礎(chǔ)知識Command對象講解6. 使用Blazor框架實現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel7. JavaScript實現(xiàn)留言板實戰(zhàn)案例8. 資深程序員:給Python軟件開發(fā)測試的25個忠告!9. vscode運(yùn)行php報錯php?not?found解決辦法10. 如何從Python的cmd中獲得.py文件參數(shù)

網(wǎng)公網(wǎng)安備