在此之前,我們介紹了動(dòng)態(tài)規(guī)劃、深度優(yōu)先搜索等基礎(chǔ)算法,但是,有部分好友評(píng)論說(shuō),難度太難了,我們知道動(dòng)態(tài)規(guī)劃的自頂向下跟深度優(yōu)先搜索一般都用遞歸實(shí)現(xiàn),今天我們就先來(lái)講講算法與數(shù)據(jù)結(jié)構(gòu)中,基礎(chǔ)中的基礎(chǔ)遞歸。講遞歸之前,我們先來(lái)了解下棧。
棧是一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),每次操作的都是棧頂?shù)臄?shù)據(jù)。我們稱(chēng)棧頂?shù)姆较驗(yàn)樯希瑮5椎姆较驗(yàn)橄拢挥猩厦娴脑匾呀?jīng)出棧了,下面元素才能出棧,我們稱(chēng)之為先進(jìn)后出。好比這個(gè)圖中健身器材,這實(shí)際上就是一個(gè)棧,最小最上面的那塊鐵最后安裝進(jìn)去,卻最先被取出來(lái),最大的那個(gè)鐵圈,最早安裝進(jìn)去,最晚取出來(lái)。(找了好久才找到一個(gè)現(xiàn)實(shí)生活中常見(jiàn)又大眾的例子,作為一個(gè)程序員,生活真的是比較單調(diào))
棧是一種支持Push跟Pop兩種數(shù)據(jù)結(jié)構(gòu),他的基本操作如下圖所示,每次push操作,實(shí)際上都是往棧的上方插入一個(gè)元素,Pop操作,則是把棧最上方的元素彈出來(lái)。