Javascript中计算斐波那契序列的最有效方法

Javascript中计算斐波那契序列的最有效方法,javascript,algorithm,big-o,fibonacci,Javascript,Algorithm,Big O,Fibonacci,我正试图通过优化算法和理解big-o等方面做得更好 我组合了下面的函数来计算第n个斐波那契数。这是有效的(对于合理的高投入)。我的问题是,如何改进此功能?用这种方法计算斐波那契序列有什么缺点 function fibo(n) { var i; var resultsArray = []; for (i = 0; i <= n; i++) { if (i === 0) { resultsArray.push(0);

我正试图通过优化算法和理解big-o等方面做得更好

我组合了下面的函数来计算第n个斐波那契数。这是有效的(对于合理的高投入)。我的问题是,如何改进此功能?用这种方法计算斐波那契序列有什么缺点

function fibo(n) {  

    var i;
    var resultsArray = [];  

    for (i = 0; i <= n; i++) {
        if (i === 0) {
            resultsArray.push(0);
        } else if (i === 1) {
            resultsArray.push(1);
        } else {
            resultsArray.push(resultsArray[i - 2] + resultsArray[i - 1]);
        }
    }

    return resultsArray[n];
}
函数fibo(n){ var i; var结果数组=[]; 对于(i=0;i如果没有数组,则可以节省内存和
。按
调用

function fib(n) {
    var a = 0, b = 1, c;
    if (n < 3) {
        if (n < 0) return fib(-n);
        if (n === 0) return 0;
        return 1;
    }
    while (--n)
        c = a + b, a = b, b = c;
    return c;
}
函数fib(n){
变量a=0,b=1,c;
if(n<3){
如果(n<0)返回fib(-n);
如果(n==0)返回0;
返回1;
}
而(--n)
c=a+b,a=b,b=c;
返回c;
}
性能斐波那契:

    var memo = {};
    var countInteration = 0;
    var fib = function (n) {
        if (memo.hasOwnProperty(n)) {
            return memo[n];
        }
        countInteration++;
        console.log("Interation = " + n);
        if (n == 1 || n == 2) {
            result = 1;
        } else {
            result = fib(n - 1) + fib(n - 2);
        }
        memo[n] = result;
        return result;
    }
    //output `countInteration` = parameter `n`

我建议你将这篇文章发布在:或者:我最近在采访问题的背景下写了一篇关于斐波那契序列的文章,重点关注复杂性。你可能会发现这篇文章在查看一些实现及其特征时很有用。为什么ECMAScript/JavaScript会很特别?你错过了
if(n==0)返回0;
@相反,我也错过了负的
n
,现在添加这些情况肯定不是最有效的,因为它是手动计算的。如果你在玩大数字,你可以通过少量操作而不是数十万次操作来计算F(2n)和F(2n+1)。编辑: