您好,登錄后才能下訂單哦!
這篇文章主要講解了“是什么遞歸函數(shù)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“是什么遞歸函數(shù)”吧!
說到遞歸函數(shù),不得不聯(lián)想到我們小時(shí)候聽過的一則故事:
從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚講故事,故事的內(nèi)容是:從前有座山,山里有座廟,廟里有個(gè)老和尚,老和尚在給小和尚講故事,故事的內(nèi)容是:從前有座山...
這個(gè)故事嚴(yán)格意義上來講不是遞歸,因?yàn)樗鼤?huì)一直重復(fù)下去,沒有終止條件,我們稱之為死循環(huán),那到底什么是遞歸呢?
再講一個(gè)故事:
一個(gè)小朋友坐在第10排,他的作業(yè)本被小組長(zhǎng)扔到了第1排,小朋友要拿回他的作業(yè)本,可以怎么辦?
他可以拍拍第9排的小朋友,說“幫我拿第1排的本子”,而第9排的小朋友可以拍拍第8排小朋友,說“幫我拿第1排的本子”...如此下去,消息終于傳到了第1排小朋友那里,于是他把本子遞給第2排,第2排又遞給第3排...終于,本子到手啦!
這就是遞歸,拍小朋友的背可以類比為函數(shù)調(diào)用,而小朋友們都記得要傳消息、送本子,是因?yàn)樗麄冇杏洃浟?,這可以類比棧。
遞歸的過程:
遞歸:就是在運(yùn)行的過程中調(diào)用自己。
成立條件:
1. 子問題須與原始問題為同樣的事;
2. 每次遞歸都是為了讓問題規(guī)模變小且更為簡(jiǎn)單;
3. 不能無限制地調(diào)用自己,須有個(gè)明確的終止條件。
遞歸函數(shù):一個(gè)函數(shù)在其內(nèi)部調(diào)用該函數(shù)自己,并滿足上述成立條件,那么這個(gè)函數(shù)就是遞歸函數(shù)。
那遞歸的作用又是什么?(為什么我們要用到遞歸呢?)
作用: 遞歸算法可以解決一些通過遞歸定義的題目 —— 通俗一點(diǎn)來講就是一個(gè)大問題中蘊(yùn)含著一些小問題,而這些小問題同時(shí)又與大問題的結(jié)構(gòu)相同,只是規(guī)模更小了。
遞歸蘊(yùn)含的核心思想就是數(shù)學(xué)歸納法:為了求解問題p(n),首先要解決基礎(chǔ)情形p(1),然后假定p(n-1)已經(jīng)解決,在此基礎(chǔ)上若p(n)得解,那么所有問題均得解。
下面用數(shù)學(xué)代入法來理解就更清晰了,我們用遞歸來計(jì)算6的階乘(先向前遞進(jìn),再向后回歸):
f(6) => 6 * f(5) => 6 * (5 * f(4)) => 6 * (5 * (4 * f(3))) => 6 * (5 * (4 * (3 * f(2)))) => 6 * (5 * (4 * (3 * (2 * f(1))))) => 6 * (5 * (4 * (3 * (2 * 1)))) => 6 * (5 * (4 * (3 * 2))) => 6 * (5 * (4 * 6)) => 6 * (5 * 24) => 6 * 120 => 720
感謝各位的閱讀,以上就是“是什么遞歸函數(shù)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)是什么遞歸函數(shù)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。