日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/6/17 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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-斐波那契数列的全部內容,希望文章能夠幫你解決所遇到的問題。

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