<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • JavaScript之遞歸 詳解!

    2019-12-1    seo達人

    首先了解一下遞歸的定義:



    遞歸:遞歸函數(shù)自己調(diào)用自己,且函數(shù)內(nèi)部必須有結(jié)束條件、否則就是一個死循環(huán);



     遞歸案例:求 n 的階乘 (循環(huán) || 遞歸)



    階乘公式先了解一下:







    即n的階乘 =  n(n-1)的階乘,如歸使用for循環(huán)來做這件事件就很簡單:



        //for循環(huán)

        function fact(n) {

            let end = 1;

            for (var i = 1; i <= n; i++) {

                end
    = i

            }

            return end

        }

        console.log(fact(5)) //5的階乘 120

    再看看遞歸的做法:



        //遞歸

        function fact(n) {

            if (n === 1) {

                return 1 //結(jié)束條件

            }

            return n fact(n - 1) //此處的fact函數(shù)相當(dāng)于當(dāng)前隊列的階乘

        }

        console.log(fact(5)) //5的階乘

    解析: 公式 n
    (n-1)!  則函數(shù)內(nèi)部只需要返回 n該函數(shù) n-1,



    即 n
    (n-1)!  == nfact(n-1)  







     看一下內(nèi)部隊列順序,當(dāng)形參為5時 階乘為 5
    fact(n-1),直至形參n = 1時,fact函數(shù)有了返回值 1,有了結(jié)束條件后整個函數(shù)結(jié)束自掉,返回階乘結(jié)果。



    遞歸的優(yōu)點:遞歸的實現(xiàn)明顯要比循環(huán)簡單得多。



    遞歸的缺點:



    1、效率低:遞歸由于是函數(shù)自己掉自己,而函數(shù)調(diào)用是有時間和空間的消耗的:每一次函數(shù)調(diào)用,都需要在內(nèi)存棧中分配空間以保存參數(shù)、返回地址以及臨時變量,而往棧中壓入數(shù)據(jù)和彈出數(shù)據(jù)都需要時間。



    2、性能差:調(diào)用棧可能會溢出,每次函數(shù)調(diào)用會在內(nèi)存棧中分配空間,而每個進程的棧的容量是有限的,當(dāng)調(diào)用的層次太多時,就會超出棧的容量,從而導(dǎo)致棧溢出。 



    總結(jié):對于JavaScript而言,能用循環(huán)解決的事情、盡量不要考慮遞歸、 慎用! 


    日歷

    鏈接

    個人資料

    藍藍設(shè)計的小編 http://m.skdbbs.com

    存檔

    主站蜘蛛池模板: 国自产精品手机在线观看视频| 四虎永久在线精品884aa下载| 精品国产欧美一区二区| 毛片a精品**国产| 亚洲欧美日韩精品永久在线| 国产精品久久久久jk制服| 亚洲精品成人网久久久久久| 国产精品久久久久乳精品爆 | 久久伊人精品青青草原高清| 一夲道无码人妻精品一区二区| 亚洲一区二区三区国产精品| 国产精品爱搞视频网站| 国产精品久久成人影院| 国产亚洲精品精华液| 综合精品欧美日韩国产在线| 精品国精品国产自在久国产应用男| 亚洲精品线在线观看| 国产短视频精品一区二区三区| 久久精品人人做人人爽97| 亚洲日韩精品一区二区三区| 欧美精品一区二区三区免费观看| 国产乱人伦精品一区二区在线观看 | 99re6这里有精品热视频| 一本色道久久88—综合亚洲精品| 精品国产福利尤物免费| 国产精品青青在线观看爽香蕉| 亚洲精品欧美日韩| 青青青青久久精品国产| 国产精品欧美一区二区三区不卡| 国产精品美女久久久久| 国产成人无码久久久精品一| 国产精品麻豆入口| 国产精品∧v在线观看| 99久久精品国产综合一区| 国产精品免费大片| 精品三级在线观看| 99热成人精品热久久669| 99RE6热在线精品视频观看| 成人国内精品久久久久一区| 久久精品99久久香蕉国产色戒| 亚洲AV日韩精品久久久久久久|