本文章僅僅對遞迴的運算過程進行解釋,不包含程式編寫的原理。
#hanoi程式內容
def move(n,a,b,c):
if n == 1:
print(a,'--->',c)
else :
move(n-1,a,c,b)
print(a,'--->',c)
move(n-1,b,a,c)
#運算過程:
#move(3,a,b,c) a=a b=b c=c 假設執行該程式
# move((n-1,a,c,b)) (2,a,c,b) a=a b=c c=b move對應line 6,填入的a,c,b對應line12
# move((n-1,b,a,c)) (1,a,b,c) print(a--->c) print對應line 4,move對應line 8
# print((a,'--->',c)) (a--->b) 這裡的a,b,c對應的是line 14和line 4的a,b,c,print對應line 7
# move((n-1,b,a,c)) (1,c,a,b) print(c--->b) print對應line 4,move對應line 8
#print(a--->c) print對應line 7
# move((n-1,b,a,c)) (2,b,a,c) a=b b=a c=b move對應line 8,填入的b,a,c對應line 12
# move((n-1,a,c,b)) (1,b,c,a) print(b--->a) print對應line 4,move對應line 8
# print((a,'--->',c)) (b--->c) 這裡的a,b,c對應的是line 18和line 8的a,b,c,print對應line 7
# move((n-1,b,a,c)) (1,a,b,c) print(a--->c) print對應line 4,move對應line 8
#最終列印結果:a--->c a--->b c--->b a--->c b--->a b--->c a--->c
注釋中((雙括號))中的內容為程式**內容,(單括號)中的內容為程式實際執行中所代入或輸入的數值。 矩陣卷積運算過程講解
在爬蟲處理驗證碼的過程中接觸到矩陣卷積運算,關於該類運算,記錄一下自己的心得。理論知識 在講述卷積過程前,我們來了解一下卷積公式。根據離散二維卷積公式 其中a為被卷積矩陣,k為卷積核,b為卷積結果,該公式中,三個矩陣的排序均從0開始。現在對於上面卷積過程進行分析 我們用來做例子的 a 矩陣為 m m...
遺傳演算法的運算過程
遺傳演算法 genetic algorithm 是一類借鑑生物界的進化規律 適者生存,優勝劣汰遺傳機制 演化而來的隨機化搜尋方法。它是由美國的j.holland教授1975年首先提出,其主要特點是直接對結構物件進行操作,不存在求導和函式連續性的限定 具有內在的隱並行性和更好的全域性尋優能力 採用概率...
大數運算過程的數學基礎
通常情況下,linux核心是不支援浮點操作的。在進行資料處理過程中,我們經常會處於這樣的尷尬 計算過程的資料位長和計算結果的誤差產生了衝突.例如如下的例項 102448 7 1024 這樣的表示式在核心中可以如下表達 long result 102448 7 1024 當然,作為實際的操作過程,表示...