写一个函数,输入n,求斐波那契数列的第n项。
F(0)=0,F(1)=1
F(N)=F(N-1)+F(N-2),其中N>1。
斐波那契数列由0,1开始,之后的斐波那契数就是由前两项相加而得。
输出要求:输出答案需要取模1e9+7(1000000007),如计算初始结果为1000000008,请返回1。
分析:采用递归法,时间复杂度无法通过要求。
因此用数组存储每一项的结果,第n项时,只需将n-1项和n-2项相加的和输出即可。
class Solution
{
public:
int fib(int n)
{
vector<int> ans{0,1};
for(int i=2;i<=n;i++)
{
ans.push_back((ans[i-1]+ans[i-2])%1000000007);
}
return ans[n];
};