當前位置:
首頁 > 最新 > 可視化遞歸——你所不知道的Python之美

可視化遞歸——你所不知道的Python之美

上面的圖是用10行Python代碼畫出的。盯著它看是否有一種眩暈的感覺?其實這只是遞歸的一種簡單實現。

請認真閱讀上述代碼會發現這個函數調用了自身。這就是所謂的遞歸。

遞歸Recursion

將問題不斷拆解,直至問題規模縮小至你可以解決為止。

Recursion is a method of solving problems that involves breaking a problem down into smaller and smaller subproblems until you get to a small enough problem that it can be solve trivially.

看完這個定義的菠蘿一臉懵逼,這個回歸到底是個啥?

不用著急,我們先記住下面3個原則:

(1)遞歸演算法必須有一個基礎問題

A recurisive algorithm must havea base case.

(這個基礎問題指最終一下子能解決的問題,也是拆解的終止條件)

(2)遞歸演算法必須拆解問題

A recurisive algorithm must change its state and move toward the base case.

(拆解即縮小問題規模)

(3)遞歸演算法必須調用自身

A recurisive algorithm must call itself, recursively.

(調用自身,形式上會在函數體中出現函數名)

所以聰明的你看出來上面那個代碼中哪條語句是最小問題了嗎?

下面我們來看另一串代碼,分形樹。

膜拜一下基本代碼:

看看它的運行結果,emmmm,感覺更像是一顆草而不是樹

先不管那麼多,我們先來看一眼代碼中的base case是誰

它就是

樹枝長度

我們來對照一下上面的原則:

(1)基礎問題(base case):

line4brachLen

(2)拆解:

line7

下面這個小視頻應該可以明顯看出它的作畫過程

那麼如何讓它看起來像一棵樹呢


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python爬蟲之正則表達式
AI量化:Python基礎

TAG:Python |