美文网首页C语言
兔子生崽问题

兔子生崽问题

作者: sure_风雨与晴 | 来源:发表于2019-03-02 11:02 被阅读4次

假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子?请编程求解该问题。

依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:
(1)每月小兔对数 = 上个月成兔对数。
(2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。
综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。


兔子繁殖.png

用fn表示第n个月成兔对数,于是可得递推公式:

(n = 1) f1 = 1
(n = 2) f2 = 1
(n >= 3) fn = fn-1+fn-2

可由上述公式递推出每个月成兔对数为:1,1,2,3,5,8,13,21,34,55,89,144...即Fibonacci数列。

#include <stdio.h>
#include <stdlib.h>
#define N 12

void Fibonacci(int f[], int n);
int main()
{
    int f[N], i;
    Fibonacci(f, N);
    printf("\nTotal = %d\n", f[N-1]);
    return 0;
}

//计算并打印Fibonacci数列的前n项
void Fibonacci(int f[], int n)
{
    int i;
    f[0] = 1;
    f[1] = 2;
    for (i = 2; i < n; i++)
        f[i] = f[i-1] + f[i-2];
    for (i = 0; i < n; i++)
        printf("%4d", f[i]);
}

相关文章

  • 兔子生崽问题

    假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月...

  • Rust语言编程实例100题-011

    Rust语言编程实例100题-011 题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子...

  • 兔子生兔子问题

    有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月...

  • 【五绝】 兔子下崽崽

    【五绝】 兔子下崽崽文/林海兔子下崽崽,多多一大排。外婆心两用,饭灶忘加柴。 平水韵八齐 青田前路街,1976年

  • 大兔子和小兔子

    亲子阅读打卡第287天(1月30日) 今天晚上给崽崽讲了一个《大兔子和小兔子》的故事。故事讲的是小兔子要上床睡...

  • java生兔子问题

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死...

  • Java基础程序

    生兔子问题: 统计字符个数:

  • 兔子和松鼠

    亲子阅读第328天(3月12日) 今天晚上给崽崽讲了一个名叫《兔子和松鼠》的故事。故事讲的是兔子在树林里玩,...

  • 兔子吃香蕉

    亲子阅读打卡273天(1月15日) 今天晚上给崽崽讲了一个《兔子吃香蕉》的故事。故事讲得是兔子看到一棵香蕉树,...

  • 无心,有心。

    曾经的我是一只兔子,大概生下来就知道要怎么过一生,作为幼崽的时候只知道吃,那时饿是最大的问题,后来还知道了来自天敌...

网友评论

    本文标题:兔子生崽问题

    本文链接:https://www.haomeiwen.com/subject/fcgjuqtx.html