题目:
求斐波那契数列的第n项。写一个函数,输入n,求斐波那契数列的第n项。
思路:
正常思路要算f(n)的话我们就需要知道f(n-2)f(n-1),依次类推要知道n前面所有的,如果使用递归的话就会导致严重的效率问题,因为依次往下会出现许多次的重复,只要避免重复就能提高效率。所以我们不妨直接从头来算,先通过f(1)和f(2)来算f(3),在依次类推算下去,就不会出现有些数算过了再算一遍的情况。
代码实现:
int fib(int n){
int result[2]={0,1};
if(n<2)
return result[n];
int a=0,b=1;
for (int i=0;i<n;i++)
{
a=a+b;
b=a-b;
a=a%1000000007;//防止所求值过大
}
return a;
};