int onemonth=1
int twomonth=0
int other=0
int main()
{
int n
int i=0
printf("请输誉启入慎虚伍一个正整数:")
scanf("%d",&n)
for(i=1i++)
{
int a=onemonth,b=twomonth,c=other
onemonth=c
twomonth=a
other+=b
if(onemonth+twomonth+other>=n)
{
printf("第%d个月数量将达到%d,为:%d\n",i,n,onemonth+twomonth+other)
break
}
}
return 0
}
思路很简单,就是循环月数+1,把兔子分为宽或3类,一个月后能繁衍的,2个月后能繁衍的,3个月后能繁衍的,每次循环统计每类的个数就行了,一个简单的逻辑问题
方法一、用递归。
方法二、把兔子定义成结构,每个兔核液子自带计时器变量,繁殖就是新建节点,构建结构链表。每次拿氏仿循环遍历所有节点的计时变量大于3的就新建一个节点插入链表。最后统计节点数量。
我用方法1来写:
#include <stdio.h>
int childbirth(int bMth,int gMth)//bMth:调用时传0,gMth:经过的最大月数
{
int cnt=0,n=bMth,num=2
while(n++<gMth+1)
if(cnt++>2)
num=num+childbirth(n,gMth+1)
return num
}
int main()
{
int i,n
printf("请输入经过多少月:"),scanf("%d",&消纤n)
for(i=1i<=ni++)
printf("经过%d个月后:兔子数量为:%d\n",i,childbirth(0,i))
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)