题目描述
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
1 | F(0) = 0, F(1) = 1 |
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例
示例1
1 | 输入:n = 2 |
示例2
1 | 输入:n = 5 |
提示
0 <= n <= 100
思路1:递归
递归
因为F(N) = F(N - 1) + F(N - 2),所以F(N - 1) = F(N - 2) + F(N - 3),可以直接采用递归完成,递归的终止条件为n为0或1
递归代码
1 | // 递归 |
但是递归存在重复计算的问题,如图:计算F(N) 需要计算 F(N - 1) , F(N - 2),而计算F(N-1)又 需要计算 F(N - 2), F(N - 3), F(N - 2)重复计算了。

思路2:自底向上递推
要计算F(N),可以先计算F(0),F(1),,,F(N-1),在计算F(N)
代码
1 | class Solution { |