这个题目是一个变化了的斐波那契数学问题,注意到起始的兔子数目。
注释其实挺重要的,至少几个变量的含义写明;
根据你的代码,添加注释
#include <stdio.h>
void main()
{
int i,j,k,month,N;
// i , j 两个初试变量分别代表斐波那契数列的第一个和第二个数,在兔子问题中前两个月幼兔的数量不会增加;
i=1,j=1,k = 2,month=1;
// k 无须赋值,应该声明一个变量,说明成年兔子
scanf("%d",&N);
//N是你所期望N个月之后的兔子数;
while(N>=month)
//感觉写成
while(month <= N) 比较容易理解;
{
k=k+i;
//根据你上面给出的题目,幼兔在前两个月不产崽,故应该加判断条件
i=i+j;
if(month >= 2) 才执行下面语句
month=month+1;
{
k = j;
j = i + j;
i = k;
}
//这里 k只做中间变量,无实际含义
if(N<month)
month++;
//月份自加;
printf("%d\n",k);
m++;
//这是这个问题的关键,成年兔子的产崽数目;
else
k=k+j;
j=i+j;
month=month+1;
}
printf("%d\n",k);
//N各月之后 兔子数应该为
m + j;
}
/***************************************************************/
#include <stdio.h>
void main()
{
int i = 1, j = 1, month = 1,m = 1,k,sum;
// m 是用来记录成年兔子产崽数; sum 记录兔子总数
int N;
scanf("%d", &N);
while(month <= N)
{
if(month >= 2)
//两个月之内 幼兔不产崽,所以当月份大于等于2时才执行 下面三个语句;
{
k = j;
j = i + j;
i = k;
}
month++;
m++;
//每个月成年兔子都产崽;
}
sum = m + j;
printf("%d\n",sum);
}
[
本帖最后由 王立帅 于 2011-4-4 15:58 编辑 ]