程式運算過程解釋 python遞迴解決漢諾塔問題

2021-08-24 23:10:34 字數 1178 閱讀 9606

本文章僅僅對遞迴的運算過程進行解釋,不包含程式編寫的原理。

#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 當然,作為實際的操作過程,表示...