溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

是什么遞歸函數(shù)

發(fā)布時(shí)間:2021-10-14 10:07:45 來源:億速云 閱讀:106 作者:iii 欄目:編程語言

這篇文章主要講解了“是什么遞歸函數(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)樗麄冇杏洃浟?,這可以類比棧。

遞歸的過程:

是什么遞歸函數(shù)

遞歸:就是在運(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)注!

向AI問一下細(xì)節(jié)

免責(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)容。

AI