首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

兔子繁衍問題:斐波那契數列在種群增長中的應用

     編輯:關於C語言

題目:兔子繁衍問題(ZJU PAT 循環-05)

經典問題:一對兔子出生後第 3 個月開始每月產一對小兔子,小兔子長到第 3 個月後也按此規律繁殖。假設兔子不死,求第 n 個月兔子總對數。

數學模型

設 f(n) 為第 n 月兔子對數:

  • f(1) = 1, f(2) = 1
  • f(n) = f(n-1) + f(n-2) (n ≥ 3)

這正是斐波那契數列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...

遞歸實現(教學用)

#include <stdio.h>

int fib(int n) {
    if (n <= 2) return 1;
    return fib(n-1) + fib(n-2);
}

int main() {
    int target;
    scanf("%d", &target);
    int month = 1;
    while (fib(month) < target) month++;
    printf("%d\n", month);  // 輸出達到目標對數所需月數
    return 0;
}

遞歸缺陷與優化

方法時間複雜度空間複雜度適用場景
遞歸O(2^n) 指數級O(n) 棧深度n ≤ 30 教學演示
迭代/動態規劃O(n) 線性O(1) 或 O(n)實際工程、大 n
矩陣快速冪O(log n)O(1)極大 n (10^9+)
通項公式O(1)O(1)需高精度浮點

迭代優化版(推薦工程使用)

int fib_iter(int n) {
    if (n <= 2) return 1;
    int a = 1, b = 1, c;
    for (int i = 3; i <= n; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    return b;
}

生物學背景補充

真實兔子繁殖特性

  • 壽命:5~12 年(非永生)
  • 性成熟:4 個月,但建議 6 個月後配種
  • 發情週期:無固定發情期,四季可繁殖
  • 懷孕期:約 30 天
  • 產仔數:初產 3~4 只,後續 7~10 只甚至更多
  • 環境要求:避開極端高溫/低溫季節以提高成活率

題目鏈接

ZJU PAT Basic Programming - 循環-05 兔子繁衍問題

延伸思考

斐波那契數列不僅出現在兔子繁殖模型中,還廣泛存在於自然界:向日葵種子排列、松果螺旋、貝殼結構、銀河旋臂等。在計算機科學中,它是動態規劃、遞歸優化、黃金分割搜索等算法的經典教學案例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved