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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM