Vuex 的使用 State Mutation 實現多個頁面共享計數
阿新 • • 發佈:2020-09-06
利用遞迴函式來解決數學中的階乘問題
def fact(n): 2 if n== 0: 3 return 1 4 else: 5 return n*fact(n-1) 6 7
利用遞迴函式來解決漢諾塔問題
關於漢諾塔問題,程式碼很多人知道,甚至倒背如流
問題描述:把 A竿的盤全部移動到C竿上,並且順序不能改變,每次只能移動一個盤子,並且要求在移動過程中始終保持這大盤在下小盤在上。
程式碼羅列:
def fact2(n,src,dst,mid): 14 globalcount 15 if n ==1: 16 print("{}:{}->{}".format(1,src,dst)) 17 count += 1 18 else: 19 fact2(n-1,src,mid,dst) 20 print("{}:{}->{}".format(n,src,dst)) 21 count += 1 22 fact2(n-1,mid,dst,src)
1、先從最簡單的兩個盤來說起
兩個盤雖然簡單,但多盤問題基本上都是圍繞著兩個盤的問題來開展的。
規律:
兩個盤的移動可以只通過兩根柱子之間來而完成,而不需要地三根柱子的輔助
需要注意的一點就是大家一定不要糾結與每個盤是怎麼具體移動的,否則則會鑽井牛角尖中。
遞迴
遞迴的實現是函式+分支語句
遞迴的過程就是遞和歸的過程
漢諾塔的最終簡化移動過程就是
A->B將n-1個盤子移動到B
A->c將最大的盤移動到C
B->C將n-1個盤移動到C