斐波那契数列实现

三种解题思路:

  1. 直接递归,时间效率最差;
  2. 使用数组动态规划,耗用大量空间;
  3. 循环迭代,每次下一个数据依赖前两个数据,效果最好。
//使用递归
function fibonacci(n){
    if(n<=2){
        return 1;
    }else{
        return fibonacci(n-1) + fibonacci(n-2);    
    }
}
//使用数组动态规划记录
function fibonacci(n){
    var val = [];
    if(n<=2){
        return 1;
    }else{
        val[1]=1; //n为2
        val[2]=2; //n为3
        for(var i=3; i<n; ++i){
            val[i] = val[i-1] + val[i-2];
        }
        return val[n-1];
    }
}
//循环迭代
function fibonacci(n){
    if(n<=2){
        return 1;
    }else{
        var first = 1;
        var second = 1;
        var third = 0;
        for(var i=3; i<=n; i++){
            third = first + second;
            first = second;
            second = third;
        }
        return third;
    }
}

转载请注明:化风的博客 » 斐波那契数列实现