大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
说明:首先想到的是递归,因为斐波那契数列就是递归思想,递推式为f(n)=f(n-1)+f(n-2)(n大于等于2)
但是!反复的递归效率太低了,导致程序一下子就会运行超时,因此,可以用循环来实现,将每次加法后的结果都记录下来即可。感觉有点空间换取时间的味道,不过有人写的空间复杂度为o(1),我也是没太想明白,有空再想想吧~~~
class Solution {
public:
int Fibonacci(int n) {
int fi[10000]={0};
fi[1]=1;
fi[2]=1;
for(int i=3;i<=n;i++)
{
fi[i] = fi[i-1]+fi[i-2];
}
return fi[n];
}
};