C语言编程题目 兔子繁衍问题?

2025-03-10 18:58:19
推荐回答(3个)
回答1:

方法一、用递归。

方法二、把兔子定义成结构,每个兔子自带计时器变量,繁殖就是新建节点,构建结构链表。每次循环遍历所有节点的计时变量大于3的就新建一个节点插入链表。最后统计节点数量。

我用方法1来写:

#include

int childbirth(int bMth,int gMth)//bMth:调用时传0,gMth:经过的最大月数


{


    int cnt=0,n=bMth,num=2;


    while(n++


        if(cnt++>2)


            num=num+childbirth(n,gMth+1);


    return num;


}

int main()


{


    int i,n;


    printf("请输入经过多少月:"),scanf("%d",&n);


    for(i=1;i<=n;i++)


        printf("经过%d个月后:兔子数量为:%d\n",i,childbirth(0,i));


    return 0;


}

回答2:

#include
typedef unsigned long long ULL;
int main() {
int month;
ULL m1=1,m2=1,f;
scanf("%d",&month);
for(int i=3; i<=month; i++) {
f=m2;
m2=m1+m2;
m1=f;
}
printf("兔子有%lld对",m2);
return 0;
}

回答3:

斐波那契数列,了解一下。
代码网上太多了,就不给出了,自己搜索一下就好。