兔子繁殖问题
网上大多都是直接写斐波那契,但是你真的懂吗?
举个例子:
兔子繁殖问题:假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?
首先这题有开局是大兔子还是兔子幼崽的区别
幼崽开局
幼崽要先成长一个月才能繁殖:
int main()
{
int oldrabbit = 1;//开局一个幼崽
int bunny = 0;
int n[100];
for (int i = 1; i < 12; i++)//一年12个月(幼崽长一个月)
{
if (i>=2 && n[i-2] >= 0)//兔子得隔一个月才能长大
{
oldrabbit += n[i-2];//小兔子变成了大兔子
bunny -= n[i - 2];//小兔子总数减少
}
n[i] = oldrabbit;//大兔子生小兔子
bunny += n[i];//给小兔子赋值
printf("%d %d", oldrabbit, bunny);
printf("\n");
}
int c = bunny + oldrabbit;
printf("有%d对兔子", c);
}
大兔子开局
int main()
{
int oldrabbit = 1;//有1对大兔子
int bunny = 0;//开始没有小兔子
int n[100];
for (int i = 0; i < 12; i++)//一年12个月(幼崽长一个月)
{
if (i>=2 && n[i-2] >= 0)//兔子得隔一个月才能长大
{
oldrabbit += n[i-2];//小兔子变成了大兔子
bunny -= n[i - 2];//小兔子总数减少
}
n[i] = oldrabbit;//大兔子生小兔子
bunny += n[i];//给小兔子赋值
printf("%d %d", oldrabbit, bunny);
printf("\n");
}
int c = bunny + oldrabbit;
printf("有%d对兔子", c);
}
这两种情况就是差了一批繁殖数量,但是由此可以看出,得出来的结果就是斐波那契数列,所以这种题可以直接用斐波那契来做,现在你懂了吗?
点个关注,或者一键三连感谢!