有两个数需要特判:0和1。循环里面应该先计算当前项,然后再移项。
递推实现的时候要明确数列是从0开始的还是从1开始的。还要明确如何定义第1项。
方法1(递推):
class Solution {
public:
int Fibonacci(int n) {
if(n<=1)
return n;
int s1=0,s2=1,s3;
for(int i=0;i<n-1;i++)
{
s3=s2+s1;
s1=s2;
s2=s3;
}
return s2;
}
};
方法2(递归):
int Fibonacci(int n) {
if(n<=1)
return n;
return Fibonacci(n-1)+Fibonacci(n-2);
}