斐波拉契数列:
1,1,2,3,5,,,
从第三个数开始,每个数是前两个数之和
求解第N个数的值。
求解过程用到递归思想,即第N个数的值等于第N-1个数的值加上第N-2个数的值,同理可求N-1与N-2的值
递归问题有两个要点:递推公式和返回条件,地推公式即每个数是其前两个数之和
只有递推公式而无返回条件,递归会一直不停进行下去,程序奔溃,所以必须要有返回条件结束递归
本题中易知,返回条件为N-1/N-1等于1或2时,返回已知值1,否则返回其前两个数之和
代码如下
#include<iostream>
#include<cstdlib>
using namespace std;
int Fb(int n);
int main()
{
int n;
cin >> n;
cout << Fb(n);
system("pause");
return 0;
}
int Fb(int n)
{
if (n == 1 || n == 2)
return 1;
else
return Fb(n - 1) + Fb(n - 2);
}