javascript遞歸函數(shù),遞歸函數(shù)的用法

JS遞歸的常見用法

求 1-100 的和

創(chuàng)新互聯(lián)長(zhǎng)期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為烏翠企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,烏翠網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1,1,2,3,5,8,13,21,34,55,89...求第 n 項(xiàng)

JS 遞歸 假如樓梯有 n 個(gè)臺(tái)階,每次可以走 1 個(gè)或 2 個(gè)臺(tái)階,請(qǐng)問走完這 n 個(gè)臺(tái)階有幾種走法

原理: clone(o) = new Object; 返回一個(gè)對(duì)象

1、很多時(shí)候可以用遞歸代替循環(huán),可以理解為遞歸是一種特殊的循環(huán),但通常情況下不推薦這樣做。

2、遞歸一般是在函數(shù)里面把函數(shù)自己給調(diào)用一遍,通過每次調(diào)用改變條件,來結(jié)束循環(huán)。

3、遞歸在數(shù)據(jù)格式一致,在數(shù)據(jù)層級(jí)未知的情況下,比普通的遍歷更有優(yōu)勢(shì)。

4、遞歸在異步的時(shí)候,更容易理解,且更容易實(shí)現(xiàn),因?yàn)榭梢栽诋惒降幕卣{(diào)里面,調(diào)用自己來實(shí)現(xiàn)每次都能拿到異步的結(jié)果再進(jìn)行其他操作。

5、遞歸實(shí)現(xiàn)的快速排序比普通遍歷實(shí)現(xiàn)的排序效率更好。

javascript 遞歸函數(shù)

其實(shí)難點(diǎn)就在于對(duì)遞歸函數(shù)的理解。所謂遞歸函數(shù),就是函數(shù)在執(zhí)行時(shí)調(diào)用自己。程序在調(diào)用一個(gè)函數(shù)時(shí),首先執(zhí)行這個(gè)函數(shù)的程序,執(zhí)行完畢后返回到原調(diào)用前的上一級(jí)程序繼續(xù)運(yùn)行這一級(jí)程序。調(diào)用遞歸函數(shù)也是如此,在執(zhí)行完遞歸函數(shù),得到3之后,它要退出遞歸函數(shù)回到調(diào)用它的原來的主程序繼續(xù)去執(zhí)行原來的主程序。由于調(diào)用遞歸函數(shù)時(shí)程序是逐級(jí)進(jìn)行的,所以返回時(shí)也是逆向逐級(jí)執(zhí)行程序并返回的,即在得到3后,返回上一級(jí)執(zhí)行這一級(jí)的程序就得到4(即再次執(zhí)行document.writeln(num1)),再返回上一級(jí)執(zhí)行這一級(jí)的程序得到5(即再次執(zhí)行document.writeln(num1))。

前端-JS遞歸函數(shù)

之前給小伙伴們分享過JS的 setInterval 和 setTimeout 函數(shù),這篇文章要分享給大家的是JS當(dāng)中的遞歸函數(shù)。

簡(jiǎn)單來說,遞歸函數(shù)就是自己調(diào)用自己,然后在一定條件下會(huì)停止或者跳轉(zhuǎn)遞歸。

這個(gè)例子簡(jiǎn)單的利用遞歸函數(shù)實(shí)現(xiàn)了一個(gè)小需求,希望這篇文章對(duì)初學(xué)前端的小伙伴有幫助。

js-遞歸方法

首先先解釋一下什么是遞歸函數(shù):什么是遞歸方法:就是一個(gè)方法,自己調(diào)用自己

但是一定要注意控制好合適的跳出,不然就會(huì)死循環(huán),如圖:

所以我們平時(shí)一定要注意,遞歸函數(shù)里調(diào)用函數(shù)本身的時(shí)候一定要要合理的控制循環(huán)跳出的語句;比如我們來看一題很經(jīng)典的面試題,請(qǐng)用遞歸方法算出1-20之間每個(gè)數(shù)的和

function calc(num){

? ? ? ? //這個(gè)if是退出遞歸的條件

? ? ? ? if(num===1) {? ? //如果沒有這個(gè)if條件

? ? ? ? ? ? return num

? ? ? ? }

? ? ? ? return num + calc(num-1)? //

? ? }

console.log(calc(3))? //這里為了方便我們理解我們可以先用num===3替代進(jìn)去,具體的方式以及步驟分解可以看圖:

如果有大佬有更好的理解方法,可以留言或者私信哦,互相學(xué)習(xí),互相進(jìn)步~~~

當(dāng)前名稱:javascript遞歸函數(shù),遞歸函數(shù)的用法
文章網(wǎng)址:http://muchs.cn/article22/phshjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)小程序開發(fā)、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)