C++程序显示斐波那契数列


斐波那契数列包含一些数字,其中每个数字都是前两个数字的和。这产生了以下整数序列:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377…….

定义斐波那契数的递推关系如下:

F(n) = F(n-1) + F(n-2) F(0)=0 F(1)=1

显示斐波那契数列的程序

有两种方法可以显示斐波那契数列,即使用动态规划和递归编程。这些方法将进一步解释如下:

动态规划

示例

#include<iostream>
using namespace std;
void fib(int n) {
   int f[n];
   int i;
   f[0] = 0;
   f[1] = 1;
   for (i = 2; i < n; i++) {
      f[i] = f[i-1] + f[i-2];
   }
   for (i = 0; i < n; i++) {
      cout<<f[i]<<" ";
   }
}
int main () {
   int n = 10;
   fib(n);
   getchar();
   return 0;
}

以上程序的输出如下所示。

输出

0 1 1 2 3 5 8 13 21 34

在程序中,main()是驱动函数。创建斐波那契数列的实际代码存储在fib()函数中,该函数从main中调用。

创建一个数组f[n],它将存储斐波那契数列的前n项。该数组的第一和第二元素分别初始化为0和1。

f[0] = 0;
f[1] = 1;

然后使用for循环将每个元素存储在数组中,作为其前两个元素的和。

for (i = 2; i < n; i++) {
   f[i] = f[i-1] + f[i-2];
}

最后显示斐波那契数列。

for (i = 0; i < n; i++) {
   cout<<f[i]<<" ";
}

递归编程

让我们看看如何使用递归显示斐波那契数列。

示例

#include<iostream>
using namespace std;
int fib(int n) {
   if (n <= 1)
   return n;
   return fib(n-1) + fib(n-2);
}
int main () {
   int n = 10, i;
   for(i=0;i<n;i++)
   cout<<fib(i)<<" ";
   return 0;
}

输出

0 1 1 2 3 5 8 13 21 34

在上面的程序中,设置了一个for循环,使用递归创建斐波那契数列的每一项。这是通过为数列中的每一项调用函数fib()来完成的。

for(i=0;i<n;i++)
cout<<fib(i)<<" ";

如果n为0或1,则函数fib()分别返回0或1。如果不是,它将递归调用自身,作为前两项的和,直到返回正确的值。

if (n <= 1)
return n;
return fib(n-1) + fib(n-2);

更新于: 2020年6月23日

15K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告