这个要先分析算法,
一对 兔子 各年的兔子数
1 2 3 4 5 6 7 8 年数
1 1 1 1 1 1 0 0 ...兔子数
1 2 3 4 5 6 7 8 年数
1 1 1 1 1 1 0 0 兔子数
{
1 2 3 4 5 6 7 8
1 1 1 1 1 1 0 0
}
1 2 3 4 5 6 7 8
1 1 1 1 1 1 0 0
..................
如果超过
从第三年开始多一对兔子,,然后这对兔子也重复上一对兔子的过程,所以用递归比较好. 上面分析了实现方法,那么开始写函数了.
//返回值有多少只兔子,参数是年
int GetSum(int year)
{
if (year <= 0)
return 0;
else if (year <= 2)
return 1;
else if (year > 6)
return GetSum(year - 1);
else
return 1 + GetSum(year -1 );
}
有点事,这个答案还差点,回头再答.
#include
main()
{
int i,tu1,tu2,tu3,m;
tu1=1;
tu2=1;
pringf("请输入月份数(要求不大于24)");
scanf("%d",&m);
if(m==1||m==2)
{
printf("有一对兔子");
}
else if(m<2&&m<=24)
{
for(i=3;i<=m;i++)
{
tu3=tu1+tu2;
tu1=tu2;
tu2=tu3;
}
printf("%d月的兔子数为#d\n",m,tu3);
}
else
{
printf("月份书输入不符合要求,程序结束\n");
}
}