题意:
给出n,求出斐波那契数列第n项,值取余1 e 9 + 7
思路:
斐波那契数列递推公式为:
f[0]=0,f[1]=1
f[n]=f[n−1]+f[n−2](n>2)
特判n < = 1 n<=1n<=1的情况
对于其他情况,for循环求就可以。
假设c就是答案,a是前两项,b是前一项。
每次先求出c = a + b,然后让a = b , b = c 。这样在下一次循环里,a , b就是前两项的值了。
代码:
class Solution { public: int mod=1000000007; int fib(int n) { int a=0,b=1,c=0; if(n==0) return 0; if(n==1) return 1; for(int i=2;i<=n;i++){ c=(a+b)%mod; a=b;b=c; } return c; } };