您的位置:首页 > 其它

兔子繁殖问题

2014-06-16 16:40 246 查看
1.成年兔子,每年能生一对兔子,小兔子两年后成年,某人有一对兔子,假设兔子不死,且每次所生的兔子,都能恰好一对,则n年后,该人有兔子多少只?

我们可以容易想到,第n年的兔子数量为第n-1和n-2年兔子数量之和.(亦如斐波那契数列)

思路如下,也可以递推得到.

#include <stdio.h>
int getNum(int n)
{
if(n==1||n==2)
return 1;
else
return getNum(n-1)+getNum(n-2);
}
int main()
{
int n;
printf("input number:\n");
scanf("%d",&n);
while(n>=1)
{
printf("The Number of rabit is:%d\n",getNum(n));
printf("inputnumber:\n");
scanf("%d",&n);
}
return 0;
}


2.关于斐波那契数列的求法可以用

F(n) = | 1 1 | × | F(n-1) | = | 1 1 | ^ (n-1) * | 1 |

F(n-1) | 1 0 | | F(n-2) | | 1 0| | 1 |

有阵可以快速幂来求,此法可以提高效率。

3.那如果有每只兔子寿命都只有四年第n年的兔子在n+4年会死亡。那麽如下即可

第n年的兔子数量为第n-1和n-2年兔子数量之和减去n-4年的兔子.

#define NUMBER rabitcount
#include <stdio.h>
int getNum(int n)
{
if(n==1||n==2)
return NUMBER;
else
return getNum(n-1)+getNum(n-2);
}

int getNum(int n)
{
if(n==1||n==2)
return 1;
else if(n==3)
return 2;
else if(n==4)
return 3;
else if(n==5)
return 4;
else
{returngetNum(n-1)+(getNum(n-2)-getNum(n-4);}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: