方法一、用递归。
方法二、把兔子定义成结构,每个兔子自带计时器变量,繁殖就是新建节点,构建结构链表。每次循环遍历所有节点的计时变量大于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; }
#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;
}
斐波那契数列,了解一下。
代码网上太多了,就不给出了,自己搜索一下就好。