题目地址
解题思路
一开始想着用递归的方法,然后最后写出来是超时的,但是逻辑没有错,只是因为题目要求:需要对答案求模,所以最后选择了从2至n的所有斐波那契数。
具体实现看代码就懂了
代码实现(C++)
递归实现(leetcode超时版)
class Solution {
public:
int fib(int n)
{
int Mod=1000000008;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
{
return (fib(n-1)+fib(n-2))%Mod;
}
}
};
按部就班迭代法(leetcode通过版)
class Solution {
public:
int fib(int n)
{
int p=0,q=0,r=1;
int Mod=1000000007;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else
{
for(int i=2;i<=n;i++)
{
p=q;
q=r;
r=(p+q)%Mod;
}
}
return r;
}
};