1. 递归法
将第N个斐波那契数表示为前两个斐波那契数的和,即fibonacci(n-1)+fibonacci(n-2);
通过不断递推到最底层的两个值;
再回归到第N个数。
class Solution {
public:
int fibonacci(int n)
{
if(n==1)
return 0;
else if(n==2)
return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}};
2. 迭代法(非递归法)
通过不断更新前两个数,得到后一个数,直到到达第N个数。
class Solution {
public:
int fibonacci(int n) {
if(n==1)
return 0;
else if(n==2)
return 1;
else
{
int prepre=0;
int pre=1;
int out=0;
for(int i=3;i<=n;i++)
{
out=pre+prepre;
prepre=pre;
pre=out;
}
return out;
}
}
};