欧美videos另类精品-欧美videos另类极品-欧美vide-欧美va在线视频-欧美va在线观看-欧美va在线播放免费观看

JavaScript之遞歸 詳解!

2019-12-1    seo達人

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



遞歸:遞歸函數自己調用自己,且函數內部必須有結束條件、否則就是一個死循環(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 //結束條件

        }

        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,有了結束條件后整個函數結束自掉,返回階乘結果。



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



遞歸的缺點:



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



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



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


日歷

鏈接

個人資料

藍藍設計的小編 http://m.73404.com.cn

存檔

主站蜘蛛池模板: 1986葫芦兄弟全集免费观看第十集 | 纲手被漫画aⅴ | 免费成年人在线视频 | 91精品综合久久久久久五月天 | 欧美成人免费一区在线播放 | 男人天堂a | 国产一区二区三区久久小说 | 日本色网址| 日产乱码卡1卡2卡三免费 | 日本亚洲免费 | 特色特色大片在线 | 久久精品国产只有精品 | 午夜影院免费体验 | 91视频夜色| 国产a高清| 午夜久久久久久亚洲国产精品 | 91看片淫黄大片.在线天堂 | 美女下面揉出水免费视频 | 久久精品国产欧美日韩99热 | 国产精品视频久 | 国产精品亚洲一区二区久久 | 我的奶头被客人吸的又肿又红 | 3d欧美人禽交 | 91噜噜噜在线观看 | 91久久综合 | 教师波多野结衣在线播放 | 欧洲一级 | 极品妖艳许清赵丽全文免费阅读 | 日本漫画大全之工之口 | 青青青草免费 | 秋霞黄色大片 | 日本高清视频网站www | 全彩调教侵犯h本子全彩妖气he | 国产精品久久久久久吹潮 | 草莓在线 | 狠狠操社区 | 强迫高h | 91久久线看在观草草青青 | 亚洲国产视频一区 | 91麻豆精品激情在线观看最新 | 99福利影院 |