基礎演算法整理(1) 遞迴與遞推

2022-07-26 02:21:16 字數 829 閱讀 5440

遞推演算法是一種用若干步可重複的簡運算(規律)來描述複雜問題的方法.

簡單來說,關於遞推和遞迴,概念如下:

void

digui()

void

ditui()

怎麼樣,用簡潔明快的方法就能讓你明白演算法的真諦是不是很爽hhhhh

遞迴遞推作為基礎演算法其實並不難,但還是有必要舉一些例題來看看= =

1.小猴子第一天摘下若干桃子,當即吃掉一半,又多吃乙個.第二天早上又將剩下的桃子吃一半,又多吃乙個.以後每天早上吃前一天剩下的一半另乙個.到第10天早上猴子想再吃時發現,只剩下乙個桃子了.問第一天猴子共摘多少個桃子?

= =這踏馬其實就是乙個口算題,放在這裡只是為了加深演算法印象

2.有雌雄一對兔子,假定過兩個月便可繁殖雌雄各一的一對小兔子。問過n個月後共有多少對兔子?

這是著名的斐波那契數列= =遞推必刷題之一,當然還有很多關於這道題的難題,暫時不一一枚舉

3.角谷定理。輸入乙個自然數,若為偶數,則把它除以2,若為奇數,則把它乘以3加1。經過如此有限次運算後,總可以得到自然數值1。求經過多少次可得到自然數1。 如:輸入22, 輸出

22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1 

step=16

= -簡單遞推不解釋。。。。

有人會問,要這麼多水題來幹嘛?我會說:水題不水永遠不知道這是水題= =

難題肯定有,只是太多太常見,找uva隨便打幾個數就是一堆= -

由於本次演算法簡單粗暴,所以詳解略少,整理動態規劃的時候我會再搞出來一點遞推的東西。

演算法基礎 遞迴與回溯 遞推 迭代關係

優點 更簡潔清晰,可讀性更好 實際上遞迴的 更清晰,但是從學習的角度要理解遞迴真正發生的什麼,是如何呼叫的,呼叫層次和路線,呼叫堆疊中儲存了什麼,可能是不容易。但是不可否認遞迴的 更簡潔。缺點 由於遞迴需要系統堆疊,所以空間消耗要比非遞迴 要大很多.而且,如果遞迴深度太大,可能會造成棧溢位 遞迴 詳...

演算法反芻 遞迴與遞推

對於遞迴和遞推的非常專業的定義和解釋在這裡就不再copy了,私以為演算法的關鍵是運用和實踐,就好比圍棋,規則簡單但是入門的門檻很高,就算熟練記憶規則也沒法下好一盤棋。likewise,對於演算法學習,最關鍵是有乙個演算法的慣性在腦子裡,這要比熟記定義重要得多,因為這需要深刻的掌握。對於演算法的學習需...

遞推與遞迴

遞推與遞迴 遞推像是多公尺諾骨牌,遞迴是大事化小。遞推的效率更高 遞推 斐波那契數列 例 母親為兒子的四年大學學費準備了一筆存款,兒子每月月底取下月生活費1000元。銀行年利率為 1.71 畢業時連本帶息要取出 1000 元。則要存入多少錢。include define rate 0.0171 in...