思路:这题很多人首先想到的是递归,fn = fn-1 + fn-2,但是这样过不了,因为有很多重复计算。所以我们尝试用动态规划去解决,也就是保存已经计算过的值,利用斐波那契数列的最优子结构的性质。
class Solution {
public:
int Fibonacci(int n) {
if(n==0) return 0;
if(n==1) return 1;
int a[40];
a[0] = 0;
a[1] = 1;
for(int i=2;i<=n;i++)
{
a[i] = a[i-1] + a[i-2];
}
return a[n];
}
};