ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
递归实现: ``` function fn(num) { if (num == 1) return 1; if (num == 2) return 2; return fn(num - 1) + fn(num - 2) } ``` 虽然实现简单,但是当num数值过大时,可能你爬完楼梯,计算还没结束,所以我们只要把小于num的数值给记录下来,会大大节约计算时间,下面动态规划实现 动态规划的本质其实就是两点 1. 自底向上分解子问题 2. 通过变量存储已经计算过的解 根据上面两点,我们的斐波那契数列的动态规划思路也就出来了 1. 斐波那契数列从 0 和 1 开始,那么这就是这个子问题的最底层 2. 通过数组来存储每一位所对应的斐波那契数列的值 ``` function fib(n) { let array = new Array(n + 1).fill(null) array[0] = 0 array[1] = 1 for (let i = 2; i <= n; i++) { array[i] = array[i - 1] + array[i - 2] } return array[n] } fib(10) ```