斐波那契数列
定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…这个数列从第3项开始,每一项都等于前两项之和。计算公式如下:
F
(
n
)
=
{
1
(
n
=
1
)
1
(
n
=
2
)
F
(
n
−
1
)
+
F
(
n
−
2
)
(
n
>
2
)
F(n) = \left\{ \begin{aligned} &1 \quad &(n=1)\\ &1\quad&(n=2)\\ &F(n-1)+F(n-2) &(n>2)\\ \end{aligned} \right.
F(n)=⎩⎪⎨⎪⎧11F(n−1)+F(n−2)(n=1)(n=2)(n>2)
1.顺序显示F0—F15
#include <iostream>
using namespace std;
int main()
{
int f0 = 0, f1 = 1, f2;
cout << f0 << ' ' << f1 << ' ';
for (int i = 2; i <= 15; ++i)
{
f2 = f0 + f1;
cout << f2 << " ";
f0 = f1;
f1 = f2;
}
cout << endl;
return 0;
}
运行结果:
注:此例包含第0项
2. 利用递归函数求任意项
调用自身的函数成为递归函数,典型的递归函数的函数体符合如下范例
if(测试终止的条件) renturn (不需要递归的简单解决方案);
else return(包括调用同一函数的递归解决方案)
此例代码如下:
#include <iostream>
using namespace std;
int Finonacci(int n);//声明函数
int main()
{
int n;
cout << "请输入要求斐波那契数列的第几项" << endl;
cin >> n;
cout << "斐波那契数列的第" << n << "项为" << Finonacci(n);
return 0;
}
//函数定义
int Finonacci(int n)
{
//利用递归函数来求
if (n == 1) return 1;
else if (n == 2) return 1;
else return (Finonacci(n - 1) + Finonacci(n - 2));
}
运行结果如下: