遍历方式实现
function fibonacci(n) {
let arr = [1, 2]
if (n < 3) return n
for(let i = 3; i <= n; i++) {
arr[i - 1] = arr[i - 3] + arr[i - 2]
}
return arr[n - 1]
}
递归方式实现
function fibonacci(n) {
if (n <= 2) return n
return fibonacci(n - 2) + fibonacci(n -1)
}
递归闭包实现
const fibonacci = (() => {
let buffer = []
return function(n) {
if (n <= 2) return n
if (!buffer[n]) buffer[n] = arguments.callee(n - 2) + arguments.callee(n -1)
return buffer[n]
}
})()