实现 斐波那契数列 的几种方法

99 阅读1分钟

function fib(n){undefined

if(n===1 || n===2) return 1

return fib(n-1) + fib(n-2)

}

这是使用递归方法来实现,n就是斐波那契数列位数的值,不过这种有个缺点,就是当n的值很大的时候(位数高的时候)会很消耗性能,会计算很久

function fib(n){undefined

let a=1,b=1,c

    for( let i=3; i<n ;i++){undefined

            c=a+b

            a=b

            b=c

      }

    return b

}

这是使用非递归的传统用法,在性能上会比较好点

function fib(n) {undefined let arr = [0, 1, 1] let(i=3; i<=n; i++) {undefined arr[i] = arr[i-1] + arr[i-2] } return arr[n] }

这是使用空间转换率来实现

​function fib(n) {undefined let cache = [0, 1, 1] function _fib(n) {undefined if(cache[n]) return cache[n] cache[n] = _fib(n-1) + _fib(n-2) return cache[n] } return _fib(n) }

这是利用缓存来实现的,极大的提高性能,不用去重新去计算一些计算过的值