赞
踩
今天来和大家讲讲斐波那契数列的那些事。
首先来介绍一下这个数列吧:
斐波那契数列,又称黄金分割数列,因数学家莱昂纳多·斐波那契(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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。