斐波那契数列
题目:斐波那契数列 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 。 非常经典的递归问题示范:
var fib = function(n) {
if (n < 2) return n // F(0) = 0,F(1) = 1
return fib(n-1) + fib(n-2) // F(n) = F(n - 1) + F(n - 2)
};
1
2
3
4
2
3
4
使用如上递归时会有许多的项会重复计算,比如fib(4)和fib(5)都会计算fib(3)、fib(2)等值,我们需要保存这些已经计算过的值节约性能,所以这里使用动态规划来优化上面的算法
var fib = function(n) {
if (n < 2) return n
let arr = new Array(n + 1)
arr[0] = 0
arr[1] = 1
for(let i = 2; i <= n; i++) arr[i] = arr[i-1] + arr[i-2]
return arr[n]
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上次更新: 2025/09/05, 8:09:00