回 帖 发 新 帖 刷新版面

主题:[原创]求此题解题思路


有一对兔子从出生后第三个月起没个月都生一对兔子。小兔子长到第三个月后每个月又升一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?兔子数的规律如下:(不满意月为小兔子,满2月不到3月为中兔子,三月以上为老兔子)
        第n个月  小兔子  中兔子  老兔子  兔子总数
           1          0       0         0         1
           2          0       1         0         1
           3          1       0         1         2 
           4          1       1         1         3
           5          1       1         2         5
           。。。                                 。。。 
           。。。                                 。。。 
#include  "stdio.h"
void main()

    long int f1,f2;
    int i;
    f1=1;f2=1;
    for(i=1; i<=20; i++)
    {
        printf("%12ld %12ld ",f1,f2);
        if(i%2==0) 
           printf("\n");
        f1=f1+f2;
        f2=f2+f1;
    }
}


谁可以帮解答一下解题思路啊,我开始都不认为这个可以输出呢 - -

回复列表 (共3个回复)

沙发

斐波那契数列,数列里每一项都是前面两项之和。思路没什么太多可讲的吧
就是定下第一个月和第二个月的值,然后按照每次输出两个月的数量来输出,一共输出40个月,每4个月换行依次。输出完之后计算下面两个月的数量

板凳


虽然我还是不怎么明白,但是还是谢谢你。

3 楼

开头的代码风格不好,把头部改写规范后注释如下
#include  <stdio.h>
int main() //注意main如果写返回值只能是int,这是C

    long int f1,f2;
    int i;
    f1=1;f2=1;//第一个月初值和第二个月初值
    for(i=1; i<=20; i++)//循环计算20次
    {
        printf("%12ld %12ld ",f1,f2);//每次打印两个月
        if(i%2==0) 
           printf("\n");//每两次打印,即每打印4个月的值即换行
        f1=f1+f2;//计算第k个月的兔子数,k=2+2*i-1
        f2=f2+f1;//计算第k+1个月的兔子数
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册