暴力版
暴力版在求大概47项就会明显感觉到慢。
function fib(n) {
return n<2?
n : fib(n-1) + fib(n-2)
}
缓存版
思路
递归求Fibonacci第n项时都会先求其前面的项,存在大量的重复计算,我们将已经计算出来的Fibonacci数缓存起来,每次递归之前判断项Fibonacci数是否已经计算过。 由于用js实现,我这里用的数组缓存。
代码
function fib1(n,arr=[]) {
if(n<2) return n
if(!arr[n]) {
arr[n] = fib1(n-1,arr)+ fib1(n-2,arr)
}
return arr[n]
}