https://jackniu81.github.io/2021/04/18/Algorithm-Fibonacci-numbers/
1. 斐波那契数列
斐波那契数列
:0, 1, 1, 2, 3, 5, 8, 13 … …
通常用 F(n) 表示,形成的序列称为 斐波那契数列
。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。
1 | F(0) = 0,F(1) = 1 |
敏捷开发时,我们估算Story Point
,通常就是使用斐波那契数列。
2. 解题思路
2.1. 递归
F(n) = F(n - 1) + F(n - 2), 很简单,就不谈了。
2.2. 动态规划
动态规划的思想是,记录中间计算结果,计算后面相时,根据前面保存的结果直接计算,避免重复计算。
3. Javascript 实现
1 | /** |
还可以进一步优化,当前使用数组记录以及计算过的F(n),由于F(n) = F(n - 1) + F(n - 2),实际只需要记录最近的2个值即可,不需要使用数组记录全部数据。