赞
踩
问题描述:
斐波那契数列是一种数学上的数列,它的定义如下:
F(0) = 0
F(1) = 1
F(n) = F(n-1) + F(n-2), n ≥ 2
也就是说,斐波那契数列的第一项是0,第二项是1,从第三项开始每一项都是前两项之和。
因此,斐波那契数列的前几项是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
斐波那契数列中的每个数字被称为斐波那契数。
这个数列在自然界中很常见,例如植物的花瓣数、兔子繁殖问题等都可以用斐波那契数列来描述。
在计算机科学中,斐波那契数列也有着广泛的应用。
特别是在算法设计和动态规划中。
函数实现如下:
这里面的注释看不懂的,下面有个例子
- //此n表示要求的第n项的斐波那契数
- int fibonacci(int n){
-
- int f0 = 0;//第1项
- int f1 = 1;//第2项
-
- //因为是从第3项开始是前两项之和,所以第1和2项是其本身
- if(n == 0 || n == 1)
- return n;
-
- //从第3个位置开始
- for(int i = 3;i <= n;i++){
- //后一项是前两项之和,算出来
- int sum = f0 + f1;
- //将两个数中第2个数赋给第1个数f0,将第3个数赋给第2个数f1
- f0 = f1;
- f1 = sum;
- }
- //最后返回的是第n项的斐波那契数
- return f1;
- }
举个例子:
斐波那契数列不是0 1 1 2 3 5 8......嘛
首先第一项0 + 第二项1得到第三项1
将两个数中第2个数传给f0将第3个数传给f1
这一遍for循环之后在进行f0+f1就代表的是第四项等于第2项加第3项的值了,以此类推
下面自己画的图应该方便理解一点,不太会用电脑作图,可以自己动手画一遍很好理解,望见谅!!!
代码实现:
- #include<iostream>
- using namespace std;
-
- /*
- 斐波那契数列是一种数学上的数列,它的定义如下:
- F(0) = 0
- F(1) = 1
- F(n) = F(n-1) + F(n-2), n ≥ 2
- 也就是说,斐波那契数列的第一项是0,第二项是1,后面每一项都是前两项之和。
- 因此,斐波那契数列的前几项是:
- 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
- 斐波那契数列中的每个数字被称为斐波那契数。
- 这个数列在自然界中很常见,例如植物的花瓣数、兔子繁殖问题等都可以用斐波那契数列来描述。
- 在计算机科学中,斐波那契数列也有着广泛的应用。
- 特别是在算法设计和动态规划中。
- */
-
- //此n表示要求前几项的斐波那契数列
- int fibonacci(int n){
-
- int f0 = 0;//第1项
- int f1 = 1;//第2项
-
- if(n == 0 || n == 1)
- return n;
-
- //从第3个位置开始
- for(int i = 3;i <= n;i++){
-
- /*
- 举个例子:
- 斐波那契数列不是0 1 1 2 3 5 8......嘛
- sum = f0 + f1 首先第一项+第二项 == 第三项
- f0 = f1 ---> 将d1赋给f0,的f0为1,f0成为第二项
- f1 = sum ---> f1成为了第三项
-
- 接下来还是f0+f1,此时相加得到的是第四项,以此类推
- 用f1返回
-
- */
- //后一项是前两项之和,算出来
- int sum = f0 + f1;
- f0 = f1;
- f1 = sum;
- }
- return f1;
- }
-
- int main(){
-
- int n;
- cout << "请输入要计算的斐波那契数列项数:";
- cin >> n;
- cout << "斐波那契数列的第" << n << "项为: ";
- cout << fibonacci(n) << endl;
-
- system("pause");
- return 0;
- }
斐波那契数列的应用子兔子生子问题:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。