什么是斐波那契数列数据
这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
f(0) = 0
f(1) = 1
f(n + 1) = f(n) + f(n-1)
实现
console.log(f(1450));
// 可以计算到1450位,不溢出
- 普通递归
-
function fib (n) { if (n === 0) return 0 if (n === 1) return 1 return fib(n - 1) + fib(n - 2) }
- 备忘录模式
-
const cache = {0: 0, 1: 1} function fib (n) { if (cache[n] === undefined) cache[n] = fib(n - 1) + fib(n - 2) return cache[n] }
- 动态规划
-
function fib (n) { let result = [0, 1] for (let i = 2; i<= n; i++) { result[i] = result[i - 1] + result[i - 2] } return result[n] }