写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。
0 1 1 2 3 5 8 13 21…
输入:n = 2
输出:1
输入:n = 5
输出:5
int fib(int n) {
if(n<2)
{
return n;
}
int f1=0;int f2=1;
for(int i=2;i<=n;i++)
{
int temp=f2;
f2=(f1+f2)%(int)(1e9 + 7);
f1=temp;
}
return f2;
}
注意:f2得到的值需要对1000000007取模运算,因为这个数字是10位的最小质数,当数字太大会溢出,需要将计算结果 % 1000000007才能保证得出的结果在int 范围中;
总结:大数阶乘,大数的排列组合等,一般都要求将输出结果对1000000007取模