日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言经典例11-斐波那契数列

發布時間:2025/6/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言经典例11-斐波那契数列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 題目
  • 2 分析
  • 3 實現
    • 3.1 實現1(遞歸)
    • 3.2 實現2(非遞歸)
  • 4 運行結果

1 題目

古典問題(兔子生崽):有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?(輸出前40個月即可)

2 分析

將該例建立數學模型,規律為1,1,2,3,5,8, 13, 21, 34, 55, 89, 144, …,即下個月是上兩個月之和,該模型在數學上稱為fibonacci數列,通過這個規律可以構造遞歸函數,也可以構造非遞歸函數計算,顯然遞歸函數的效率非常非常低,但是程序簡潔明了(不過非遞歸的也不復雜…),遞歸公式如下:

3 實現

3.1 實現1(遞歸)

#include<stdio.h>int fibonacci(int n) {if (n == 1 || n == 2) {return 1;} else {return fibonacci(n - 1) + fibonacci(n - 2);} }int main() {for (int i = 1; i <= 40; i++) {printf("第%d個月個數為%d\n", i, fibonacci(i));}return 0; }

3.2 實現2(非遞歸)

#include<stdio.h>int main() {int f1 = 1;int f2 = 1;int month = 1; // 用于顯示月份for (int i = 1; i <= 20; i++, month += 2) {printf("第%d個月的個數為%d\n", month, f1);printf("第%d個月的個數為%d\n", month + 1, f2);f1 = f1 + f2;f2 = f1 + f2;}return 0; }

4 運行結果

1個月的個數為12個月的個數為13個月的個數為24個月的個數為35個月的個數為56個月的個數為87個月的個數為138個月的個數為219個月的個數為3410個月的個數為5511個月的個數為8912個月的個數為14413個月的個數為23314個月的個數為37715個月的個數為61016個月的個數為98717個月的個數為159718個月的個數為258419個月的個數為418120個月的個數為676521個月的個數為1094622個月的個數為1771123個月的個數為2865724個月的個數為4636825個月的個數為7502526個月的個數為12139327個月的個數為19641828個月的個數為31781129個月的個數為51422930個月的個數為83204031個月的個數為134626932個月的個數為217830933個月的個數為352457834個月的個數為570288735個月的個數為922746536個月的個數為1493035237個月的個數為2415781738個月的個數為3908816939個月的個數為6324598640個月的個數為102334155

總結

以上是生活随笔為你收集整理的C语言经典例11-斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。