循環(huán):不斷重復(fù)進(jìn)行某一運(yùn)算、操作。
迭代:不斷對(duì)前一舊值運(yùn)算得到新值直到達(dá)到精度。一般用于得到近似目標(biāo)值,反復(fù)循環(huán)同一運(yùn)算式(函數(shù)),并且總是把前一 次運(yùn)算結(jié)果反代會(huì)運(yùn)算式進(jìn)行下一次運(yùn)算
遞推:從初值出發(fā)反復(fù)進(jìn)行某一運(yùn)算得到所需結(jié)果。-----從已知到未知,從小到達(dá)(比如每年長(zhǎng)高9cm,20年180,30后270)
回溯:遞歸時(shí)經(jīng)歷的一個(gè)過程。
遞歸:從所需結(jié)果出發(fā)不斷回溯前一運(yùn)算直到回到初值再遞推得到所需結(jié)果----從未知到已知,從大到小,再?gòu)男〉酱?你想進(jìn)bat,那么編程就的牛逼,就得卸載玩者農(nóng)藥,努力學(xué)習(xí))。遞歸(Recursion)是從歸納法(Induction)衍生出來的。
一個(gè)運(yùn)算(操作),可以通過不斷調(diào)用本身的運(yùn)算形式,往往需要通過前一次的結(jié)果來得到當(dāng)前運(yùn)算的結(jié)果,因而,程序運(yùn)行時(shí),總是先一次次地「回溯」前一次的結(jié)果(回溯過程中這些結(jié)果是未知的,直到回溯到初值令回溯終止,再層層遞推回來得到當(dāng)前要求的值)
一個(gè)完整的遞歸應(yīng)該有下面三個(gè)條件,否則就是不合格的遞歸
明確遞歸的終止方法(一個(gè)遞歸必須有他遞推到頭的界定,否則將會(huì)是無限遞歸 )
明確的終止時(shí)處理方法
重復(fù)調(diào)用自身并縮小問題規(guī)模
死循環(huán)不會(huì)棧溢出而無限遞歸會(huì)出現(xiàn)棧溢出情況,詳情推薦閱讀:《遞歸-程序之美,及其與循環(huán)的區(qū)別》,但實(shí)際上業(yè)務(wù)模型幾乎不會(huì)遇到。
kidneyball知乎回答總結(jié)會(huì)精辟
在有循環(huán)的語言里,有的人認(rèn)為尾遞歸優(yōu)化除了炫技之外是完全無用的。其實(shí)不然,尾遞歸寫法在我看來有以下好處
強(qiáng)迫你把循環(huán)寫成單獨(dú)的函數(shù)。這又有什么好處呢?這會(huì)影響你的編程風(fēng)格,習(xí)慣使用尾遞歸之后,你的寫出一個(gè)幾百行大函數(shù)的機(jī)率會(huì)小得多。
保證沒有副作用,統(tǒng)一使用不可變數(shù)據(jù)。在循環(huán)里,循環(huán)變量就是一個(gè)可變數(shù)據(jù)。作為人肉開發(fā)者,如果想保證自己的某段程序沒有副作用,最好的做法就是根本不要寫任何帶副作用的東西,這樣代碼審查時(shí)一眼看過去就能知道有沒有副作用。至于避免副作用有什么好處,這又可以寫一篇文章,這里就不展開了。
轉(zhuǎn)換成惰性序列時(shí)比較好看。在某些語言里,尾遞歸形式基本上只要去掉循環(huán)變量(變成無限遞歸), 把初始狀態(tài)作為首元素,就是一個(gè)能直接拿來用的惰性序列。
“遞歸”是一種思路,這種思路的特點(diǎn)是:我不關(guān)注問題本身,我只關(guān)注這個(gè)問題如何可以用一種可重復(fù)的方式分解為一些規(guī)模更小的子問題,以及這些子問題與原問題的關(guān)系。再加上當(dāng)問題的規(guī)模足夠小的時(shí)候,存在一個(gè)簡(jiǎn)單直接的解法。
遞推和遞歸還是迷糊,show code
//遞歸求解
function?fib(n){
????return?n?<2?1:fib(n-1)?+?fib(n-2);
}
//遞推求解
function?fib(n){
????let?start=0;
????let?fn=1;
????for?(let?i=0;i<n;i++)?{
????????let?t=fn;
????????fn=fn+start;
????????start=t;
????}
????return?fn;
}
不難看出,
程序的一般寫法就好比是數(shù)列的通項(xiàng)公式。
程序的遞歸寫法就好比是數(shù)列的遞推公式。
再談循環(huán)&迭代&回溯&遞歸&遞推這些基本概念 - 模型設(shè)計(jì),領(lǐng)域設(shè)計(jì),軟件設(shè)計(jì), - 周陸軍的個(gè)人網(wǎng)站,不定時(shí)更新,文有不妥之處,請(qǐng)留言告知,多謝(再談系列多為總結(jié)性文章(搬磚湊))。
推薦文章: