【C語言編程】求Fibonacci(斐波那契)數列前40個數

問題:

求Fibonacci(斐波那契)數列前40個數。

分析:

這個數列有如下特點:第1,2兩個數爲1,1。從第三個數開始,該數是其前面兩個數之和。即該數列爲1,1,2,3,5,8,13,… ,用數學方式表示爲:
在這裏插入圖片描述

代碼:

#include <stdio.h>
int main() {
    int f1 = 1,f2 = 1;
    int i;
    for (int i = 1; i<=20; i++) {	//結束條件
        printf("%12d %12d",f1,f2);
        if(i%2 == 0) printf("\n");	//if語句作用是使輸出4個數後換行
        f1 = f1+f2;
        f2 = f2+f1;
    }
    return 0;
}

輸出結果:
在這裏插入圖片描述

改:

1、若想一行不止輸出4個數,只需要調整if語句中的條件。由於每次循環是輸出兩個數,所以if(i%2 == 0)是循環兩次(輸出4個數)換一行,那麼循環三次(輸出6個數)換一行就可以寫成if(i%3 == 0),以此類推。
2、若想改變結束條件,則在for循環中修改即可。
for (int i = 1; i<=20; i++)是循環輸出直到循環20次(輸出40個數)爲止,若想在輸出的值上作限制,此處還需考慮。

  • 在此我只想到另一種方法。上面的代碼也是可以改的,但是改完會更加臃腫,我能想到的只有下面的方法:
#include <stdio.h>
int main() {
    int f1 = 1,f2 = 1,f3;
    int i;
    printf("%12d%12d",f1,f2);
    for (int i = 3; ; i++) {		//此處要從第三個數開始計算i
        f3 = f1 + f2;
        if(f3>15) break;			//此處用值來限制循環
        printf("%12d",f3);
        if(i%6 == 0) printf("\n");	//換行在此設置
        f1 = f2;
        f2 = f3;
    }
    return 0;
}

有好的想法歡迎留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章