今天来和大家讲讲斐波那契数列的那些事。
首先来介绍一下这个数列吧:
斐波那契数列,又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:0、1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
其实说白了就是第一项和第二项给定,第三项=第二项+第一项,第四项=第三项+第二项。。。。。。后一项等于前两项的和。
思路:由上文标红的那个关系,可知可以用数组来解决这个问题。因此可以将用户输入的数字n作为动态数组的元素项数,根据定义找出各项关系。
此时可以用new函数定义动态数组。就是下面那个样子。a是数组名。n是用户输入的数字。
int* a = new int[n];
不要忘了 定义数组要引用头文件。
#include<string>
下面是源码,仅供参考,如有错误,多多指正。
#include<iostream> //头文件
#include<string>
using namespace std;
int fab(int n) //定义斐波那契数列函数
{
cout << "这几项数为:";
if (n == 0) //输入0时不符合
{
cout << "请重新输入。";
}
else if (n == 1 || n == 2) //输入1和2时为特例,直接输出即可
{
cout << n << endl << " 这几项的和为:" << n;
}
else
{ //输入其他数时,可计算
int* a = new int[n]; //定义动态数组,将数列的总共n项作为数组元素
for (int i = 0; i < n; i++)
{
a[0] = 0;
a[1] = 1;
a[i] = a[i - 1] + a[i - 2]; //根据数列定义,找出各项关系
}
for (int i = 0; i < n; i++) //用循环遍历各项
{
cout << a[i] << " ";
}
cout << endl << "这几项的和为:"; //用累加法计算各项的和
int d = 0;
for (int i = 0; i < n; i++)
{
d = a[i] + d;
}
cout << d;
}
return 0; //自定义函数结束
}
//主函数结束
int main()
{
//项目一:设计和编写程序,完成对输入长度的斐波那契数列通项
// 及
// 数列和的求值。
fab(2);
cout << endl;
system("pause");
return 0;
}