天天看點

看動畫學算法之:遞歸和遞歸樹

簡介

遞歸樹和階乘

斐波那契數列

gcd最大公約數

n中選k

0-1背包問題

硬币找零問題

數組的最長遞增子序列

旅行商問題

在之前我們介紹的很多資料結構和算法都用到了遞歸,遞歸非常容易了解,用途也很廣泛,但是有一個缺點就是需要儲存棧的狀态,如果遞歸次數太多會造成棧溢出的問題。

本文将會講解常見的棧的應用,并使用遞歸樹形象的展示其遞歸的過程。

遞歸樹是疊代過程的一種圖像表述。遞歸樹往往被用于求解遞歸方程, 它的求解表示比一般的疊代會更加的簡潔與清晰。

看一個最簡單的使用遞歸的例子,就是階乘。

比如 4!=4* 3!= 4 * 3 * 2! = 4 * 3 * 2 * 1! =24。

我們用一個動畫來詳細看一下階乘的遞歸調用和它的遞歸樹。

看動畫學算法之:遞歸和遞歸樹

遞歸樹的運作過程是先建構遞歸樹,然後從最底層得到運作結果,一層一層的進行回歸,最後得到最終的結果。