1. 程式人生 > 實用技巧 >Vuex 的使用 State Mutation 實現多個頁面共享計數

Vuex 的使用 State Mutation 實現多個頁面共享計數

利用遞迴函式來解決數學中的階乘問題

 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     global
count 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