<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • JavaScript之遞歸 詳解!

          2019-12-1    seo達人

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



          遞歸:遞歸函數自己調用自己,且函數內部必須有結束條件、否則就是一個死循環;



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



          階乘公式先了解一下:







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



              //for循環

              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 //結束條件

                  }

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

              }

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

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



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







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



          遞歸的優點:遞歸的實現明顯要比循環簡單得多。



          遞歸的缺點:



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



          2、性能差:調用棧可能會溢出,每次函數調用會在內存棧中分配空間,而每個進程的棧的容量是有限的,當調用的層次太多時,就會超出棧的容量,從而導致棧溢出。 



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


          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.sdgs6788.com

          存檔

          91精品日韩人妻无码久久不卡| 久久精品成人一区二区三区| 精品综合久久久久久97| 亚洲精品高清国产一线久久| 日韩人妻无码一区二区三区久久| 国内精品久久久久影院一蜜桃 | 久久久亚洲欧洲日产国码二区 | 久久99精品国产99久久6| 久久综合色老色| 狠色狠色狠狠色综合久久| 国产日韩欧美久久| 无码久久精品国产亚洲Av影片 | 欧美久久综合性欧美| 亚洲精品国产综合久久一线| 一本久久a久久精品亚洲| 精品多毛少妇人妻AV免费久久| 精品久久久一二三区| 中文精品久久久久国产网址| 亚洲伊人久久精品影院| 久久亚洲AV无码西西人体| MM131亚洲国产美女久久| 精品一二三区久久aaa片| 久久久噜噜噜久久| 青青草国产精品久久久久| 亚洲伊人久久大香线蕉综合图片| 久久精品成人一区二区三区| 久久精品国产精品青草| 久久婷婷五月综合色高清| 精品国产乱码久久久久久呢| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久久久亚洲爆乳少妇无| 久久国产成人精品麻豆 | 久久国产免费直播| 狠狠色丁香婷综合久久| 国产婷婷成人久久Av免费高清| 久久99久久99精品免视看动漫| 久久亚洲高清综合| 香港aa三级久久三级老师2021国产三级精品三级在 | 伊人久久精品影院| 久久精品成人欧美大片| 狠狠色狠狠色综合久久|