最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js如何計算斐波那契數(shù)列第n項的值

 更新時間:2023年01月17日 14:42:47   作者:淡定如斯  
這篇文章主要介紹了js如何計算斐波那契數(shù)列第n項的值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

js計算斐波那契數(shù)列第n項的值

function myFibonacci(n) {
	if(n < 0){return;}
	if(n === 0){ return 0;}
	if(n === 1){ return 1;}
	if(n > 1){
		return myFibonacci(n-1) + myFibonacci(n-2);
	}
}

js求斐波那契數(shù)列Fibonacci中的第n個數(shù)是多少?

// **3 求斐波那契數(shù)列Fibonacci中的第n個數(shù)是多少?**
    // > 1 1 2 3 5 8 13 21...
    // > f(n)=f(n-1)+f(n-2)
    // >
    // > f(1)=f(2)=1
        function getFib(n) {
            var n1 = 1;//儲存f-2
            var n2 = 1;//儲存f-1
            var n3 = 0;//儲存取得值
            //i=2,因為第一個算的就是第三個的值
            for(var i = 2; i < n; i++) {
                n3 = n1 + n2;
                //為取下一個值做準備,原來的n-1變成n-2,當前取出的值變成了下一個的n-1
                n1 = n2;
                n2 = n3;
            }
            return n3;

js實現(xiàn)斐波那契數(shù)列求項及優(yōu)化

斐波那契數(shù)列

相信每一個接觸算法的人都會遇到一道經(jīng)典的算法問題,斐波那契數(shù)列。

斐波那契數(shù)列的規(guī)律也很簡單,就是第一第二項值為1,第三項開始每一項值為該項前兩項的和;實現(xiàn)起來也并不難。

function fib(n){
    if (n===1 || n===2){//判斷項所在位置,如果為第一第二項,返回1
        return 1;
    } else{
        return fib(n-1)+fib(n-2);//位置在第三項及以后,返回前兩項和
    }
}
console.log(fib(5));

這個就是在JS里面簡單實現(xiàn)求斐波那契數(shù)列某一項值的一個代碼;

但是這個代碼的缺陷也是很明顯的,時空復(fù)雜度太高;我們可以定義一個變量 i 來看一下

let =0;
function fib(n){
    i++;
    if (n===1 || n===2){//判斷項所在位置,如果為第一第二項,返回1
        return 1;
    } else{
        return fib(n-1)+fib(n-2);//位置在第三項及以后,返回前兩項和
    }
}
console.log(fib(5));
console.log(i);

在這個圖片里面我們可以看到,當n的值為40的時候,i 的值是204668309,也就是說我們求斐波那契第40項的時候函數(shù)被調(diào)用的次數(shù);

因為字符串的不可變特征只要還沒找到函數(shù)出口前就會一直在棧上開辟新空間去存儲數(shù)據(jù),這個也是棧溢出最主要的原因。

優(yōu)化

有問題那么我們就要去優(yōu)化,最主要的性能問題就是數(shù)據(jù)存儲上會不斷開辟新空間造成空間復(fù)雜度的提升,解決方法也很簡單:定義一個空數(shù)組存儲斐波那契數(shù)列項。因為數(shù)組是一個復(fù)雜類型存儲在堆里面,而且需要new的時候才會去創(chuàng)建一個新的存儲空間,我們只需要在棧上建立一個索引去訪問該數(shù)組就可以。

//定義存儲斐波那契數(shù)列項數(shù)組
let result = [];
let i=0;
function sum(a) {
    i++;
    //首先判斷數(shù)組內(nèi)有沒有當前斐波那契數(shù)列項,如果有直接從數(shù)組獲??;沒有則將該項push進數(shù)組,再從數(shù)組過去該項
    if (result[a] !== undefined){
        return result[a];
    } else{
        if (a===1 || a===2){
            result[a] = 1;
            return 1;
        } else{
            result[a] = sum(a-1)+sum(a-2);
            return result[a];
        }
    }
}
console.log(sum(1476));
console.log(i);

上面代碼就是經(jīng)過優(yōu)化之后的代碼,很簡單;就是添加了一個數(shù)組存儲斐波那契數(shù)列項。效果也是很顯著;

下面是求第1476項 i 的值:

上面就是斐波那契數(shù)列求項的實現(xiàn)以及優(yōu)化代碼

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序 wx:for遍歷循環(huán)使用實例解析

    微信小程序 wx:for遍歷循環(huán)使用實例解析

    這篇文章主要介紹了微信小程序 wx:for遍歷循環(huán)使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 小程序?qū)崿F(xiàn)上傳視頻功能

    小程序?qū)崿F(xiàn)上傳視頻功能

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)上傳視頻功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JS組件封裝之監(jiān)聽localStorage的變化

    JS組件封裝之監(jiān)聽localStorage的變化

    這篇文章主要介紹了JS組件封裝之監(jiān)聽localStorage的變化,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • typescript配置alias的詳細步驟

    typescript配置alias的詳細步驟

    這篇文章主要介紹了typescript配置alias,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 顯示/隱藏側(cè)邊欄

    顯示/隱藏側(cè)邊欄

    顯示/隱藏側(cè)邊欄...
    2006-10-10
  • Javascript中的神器——Promise

    Javascript中的神器——Promise

    本文主要介紹了Javascript中Promise的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript獲取一個范圍內(nèi)日期的方法

    JavaScript獲取一個范圍內(nèi)日期的方法

    這篇文章主要介紹了JavaScript獲取一個范圍內(nèi)日期的方法,涉及javascript操作日期的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • webpack4之如何編寫loader的方法步驟

    webpack4之如何編寫loader的方法步驟

    這篇文章主要介紹了webpack4之如何編寫loader,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • js 純數(shù)字不重復(fù)排列的另類方法

    js 純數(shù)字不重復(fù)排列的另類方法

    有一組數(shù)據(jù),大概10萬個左右,每一單位的值不會大于30000,要求按照由大到小的順序不重復(fù)輸出。
    2010-07-07
  • JS數(shù)組splice操作實例分析

    JS數(shù)組splice操作實例分析

    這篇文章主要介紹了JS數(shù)組splice操作,結(jié)合實例形式分析了javascript使用splice方法刪除數(shù)組元素相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10

最新評論

类乌齐县| 旬邑县| 黎城县| 甘肃省| 上高县| 丹棱县| 井研县| 高要市| 邵阳县| 通城县| 阳江市| 绿春县| 旌德县| 读书| 太仆寺旗| 诏安县| 宁晋县| 澳门| 永修县| 长沙市| 仙游县| 玛纳斯县| 怀远县| 苏尼特左旗| 麦盖提县| 普陀区| 武山县| 陇川县| 将乐县| 金沙县| 昌宁县| 永德县| 长汀县| 北流市| 正蓝旗| 澎湖县| 吉隆县| 东海县| 平阳县| 平塘县| 贵南县|