算法趣事·123遞推

龔老師的電腦最近脾氣很大,因?yàn)樽罱铱傋屗雒杜e算法,可把它累壞了。枚舉算法大家還記得吧,先來(lái)復(fù)習(xí)一下找找為什么電腦脾氣這么大!枚舉算法設(shè)計(jì)模式:1.分析題目,確定可解的范圍。2.設(shè)計(jì)循環(huán)結(jié)構(gòu),包括循環(huán)次數(shù)和判斷條件,在循環(huán)體內(nèi)對(duì)可能解逐一判定,直至求出問(wèn)題解。3.為了提高解決問(wèn)題的效率,使可能解的范圍降至最小。注意,小心電腦罷工!


注意小心電腦罷工!看來(lái)我的電腦最近在琢磨著罷工了,得學(xué)習(xí)個(gè)新的算法來(lái)緩解下電腦壓力了!枚舉算法是個(gè)值得我們每個(gè)人都學(xué)習(xí)的持之以恒的好同學(xué),但有時(shí)候顯的不夠聰明,今天我們來(lái)認(rèn)識(shí)“聰明”點(diǎn)的算法——遞推算法。




遞推算法青出于藍(lán)而勝于藍(lán),繼承了枚舉算法持之以恒的精神,又取巧的先來(lái)找一找規(guī)律。遞推算法以“起點(diǎn)”為基礎(chǔ),運(yùn)用相同的運(yùn)算規(guī)則,逐次重復(fù)運(yùn)算,直至得出結(jié)論、運(yùn)算結(jié)束。聰明的你想一想,如果以“終點(diǎn)”為基礎(chǔ),依照運(yùn)算規(guī)則重復(fù)運(yùn)算,算不算遞推算法呢?遞推算法分兩種模式,一:順推。從已知條件開(kāi)始,逐步推算出問(wèn)題的解。二:逆推。現(xiàn)在知道剛才的答案了吧?算,遞推算法,還時(shí)逆推算法。


遞推算法設(shè)計(jì)模式:1.分析題目已知條件和結(jié)果之間的聯(lián)系【例如,1,1,2,3,5,8? 找出聯(lián)系了嗎?】。2.設(shè)計(jì)循環(huán)結(jié)構(gòu),包括循環(huán)次數(shù)和判斷條件,在循環(huán)體內(nèi)對(duì)可能解逐一判定,直至求出問(wèn)題解。




頭昏腦漲的同學(xué)估計(jì)要說(shuō):好了說(shuō)得那么厲害,那這玩意到底干啥的?遞推算法在數(shù)學(xué)各個(gè)領(lǐng)域中都被廣泛的運(yùn)用著,我們來(lái)看個(gè)實(shí)例吧。【今天來(lái)點(diǎn)簡(jiǎn)單的開(kāi)胃菜!】


小試牛刀:

滿足F1=F2=1,Fn=Fn-1+Fn-2的數(shù)列我們叫做斐波那契數(shù)列,(Fibonacci)它的前若干項(xiàng)是:1,1,2,3,5,8,13,21,34…求此數(shù)列的第n項(xiàng)。


小提示:題目意圖是讓我們輸入一個(gè)數(shù),讓電腦幫我們?cè)陟巢瞧鯏?shù)列中找到那個(gè)位置上的數(shù)字。【例如我輸入4,電腦會(huì)把斐波那契數(shù)列中第四個(gè)數(shù)字3輸出來(lái)。】既然要在斐波那契數(shù)列中找數(shù)字,第一步得研究出這個(gè)數(shù)列有什么規(guī)律吧?斐波那契數(shù)列?聽(tīng)起來(lái)就像某個(gè)數(shù)學(xué)大師來(lái)折騰我們的的杰作。據(jù)說(shuō)遞推算法這功夫在數(shù)學(xué)世界中游奇效?


1.解法分析:

遞推算法設(shè)計(jì)模式:1.分析題目已知條件和結(jié)果之間的聯(lián)系。已知條件:【1,1,2,3,5,8,13,21,34…】,規(guī)律顯而易見(jiàn),從第三個(gè)數(shù)字開(kāi)始,前兩個(gè)數(shù)字之和等于第三個(gè)數(shù)字【例如:3+5=8,5+8=13,8+13=21】。我們先把數(shù)字列出來(lái),第一個(gè)數(shù)字:f1,第二個(gè)數(shù)字:f2,第三個(gè)數(shù)字:f3。f3=f1+f2【f1+f2的值,賦值給f3。】第一個(gè)加法式子搞定了,再來(lái)研究第二個(gè)式子,姑且把第四個(gè)數(shù)字叫為:f4,f4=f2+f3。看起來(lái)也對(duì),可是之后的第五個(gè)數(shù)字,第六個(gè)數(shù)字都需要f5,f6....嗎?明顯是不合理的,電腦可不希望你這么無(wú)知的分配空間。


那么回看看,剛剛f3=f1+f2之后,f1還有用嗎?第四個(gè)數(shù)字是第三和第二數(shù)相加,其實(shí)至始至終都只用了3個(gè)數(shù)字,那么我們拿3個(gè)變量來(lái)存放這3個(gè)數(shù)字就ok了,何必要F5,F(xiàn)6呢?


2.代碼實(shí)現(xiàn)

聰明的你搞定了沒(méi)?



3.代碼詳解:

運(yùn)用遞推算法首先要研究出一串?dāng)?shù)字間的規(guī)律,我們確定規(guī)律發(fā)現(xiàn)只需要3個(gè)變量來(lái)存放不斷變換的數(shù)字,那么首先來(lái)3個(gè)變量,f1, f2, f3。按題目要求,我們手動(dòng)輸入n的值,告訴電腦我們需要輸出第n個(gè)位置上的數(shù)。既然第n個(gè)位置,那么循環(huán)找起來(lái)吧,從第一個(gè)位置找還是從第三個(gè)位置找?


第一,第二數(shù)為1,從第三數(shù)開(kāi)始符合規(guī)律,當(dāng)然是從第3個(gè)位置開(kāi)始,至少三個(gè)數(shù)才符合我們發(fā)現(xiàn)的規(guī)律:f3=f1+f2,既然f1, f2已經(jīng)用完了,首先把f2的值存放到f1之內(nèi),反正f1的數(shù)字已經(jīng)沒(méi)用了【好好理解這部分!】。接著把f3的值放到f2之內(nèi),反正f2的值已經(jīng)放到了f1內(nèi)。【好好理解這部分!】。

按照我們安排的規(guī)律,循環(huán)我們要找到的第n個(gè)位置,那么乖乖輸出正確答案吧。




4.代碼升級(jí):

別高興太早,嚴(yán)謹(jǐn)?shù)膽B(tài)度才能讓你顯得更靠譜哦!讓程序輸出第一個(gè)位置,第二個(gè)位置看看?EXM?電腦似乎瘋了?找一找哪里有問(wèn)題呢?

通過(guò)某個(gè)已觀察出的條件,利用特定規(guī)律得出中間推論,然后逐步遞推直至得出結(jié)論。遞推算法可是在數(shù)學(xué)世界中有著舉足輕重的地位,你學(xué)會(huì)了嗎?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評(píng)論 6 545
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,795評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 178,943評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 64,057評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,773評(píng)論 6 414
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 56,106評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 43,282評(píng)論 0 291
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,793評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,507評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,741評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,929評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 35,325評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 36,661評(píng)論 1 296
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,482評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,702評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容