C 语言实例 - 斐波那契数列

斐波那契数列指的是这样一个数列 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项开始,每一项都等于前两项之和。

来历

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对
两个月后,生下一对小兔对数共有两对
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对
------
依次类推可以列出下表:
经过月数
1
2
3
4
5
6
7
8
9
10
11
12
幼仔对数
1
0
1
1
2
3
5
8
13
21
34
55
成兔对数
0
1
1
2
3
5
8
13
21
34
55
89
 
总体对数
1
1
2
3
5
8
13
21
34
55
89
144
 
幼仔对数=前月成兔对数
成兔对数=前月成兔对数+前月幼仔对数
总体对数=本月成兔对数+本月幼仔对数
可以看出幼仔对数、成兔对数、总体对数都构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。

递推公式

斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)
显然这是一个线性递推数列。
流程图:
 

实例 - 输出指定数量的斐波那契数列

#include <stdio.h>

int main()
{
    int i, n, f1 = 1, f2 = 1, f;//定义变量

    printf("输出几项: ");
    scanf_s("%d", &n);//输入你想输出的项数

    printf("斐波那契数列: ");

    for (i = 1; i <= n; i=i+1)//for循环
    {
        printf("%d, ", f1);
        f = f1 + f2;
        f1 = f2;
        f2 = f;
    }
    return 0;
}

 

posted @ 2019-11-16 19:17  木子欢儿  阅读(1427)  评论(0编辑  收藏  举报