题目描述
写一个函数,输入 n
,求斐波那契(Fibonacci)数列的第 n
项(即 F(N)
)。斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
解答
基本计算公式,递推可得
class Solution {
public:
int fib(int n) {
if (n==0) return 0;
if (n==1) return 1;
int f0=0,f1=1,f2,f3=1e9+7;
n=n-1;
while (n)
{
f2=(f1+f0);
f2=f2 % f3;
f0=f1;
f1=f2;
n--;
}
return f1;
}
};