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) }
这是利用缓存来实现的,极大的提高性能,不用去重新去计算一些计算过的值