演算法實驗報告1——漢諾塔——2020.12.17
阿新 • • 發佈:2020-12-21
技術標籤:python演算法-每日一練演算法python資料結構javac++
演算法實驗報告1——漢諾塔
一丶漢諾塔程式碼
# coding=gbk
__author__ = 'Blockchain_Key'
__time__ = '2020.12.17'
# 漢諾塔問題
# 如果有n個圓盤,所需移動的步數為 2^n-1
i = 0 # 定義全域性變數i
# 定義一個函式給4個引數n是圓盤的個數,a代表A柱子,b,c 函式裡面的是形式引數
def Hanoi(n,a,b,c):
# 把變數i全域性化,如果不全域性化,只可訪問讀取不能進行操作修改
global i
if n==1:
i += 1
print('移動第',i,'次',a,'-->',c)
else:
# 1.把A柱上n-1個圓盤移動到B柱上
Hanoi(n-1,a,c,b) # 傳的才是實際引數
# 2.把A柱上最大的移動到C柱子上
Hanoi(1,a,b,c)
# 3.把B柱子上n-1個圓盤移動到C柱子上
Hanoi(n-1,b,a,c)
if __name__ =="__main__":
Hanoi(int(input("請輸入圓盤個數:")),'A','B','C')