主题:[原创]求此题解题思路
dd8924
[专家分:0] 发布于 2010-04-21 21:26:00
有一对兔子从出生后第三个月起没个月都生一对兔子。小兔子长到第三个月后每个月又升一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?兔子数的规律如下:(不满意月为小兔子,满2月不到3月为中兔子,三月以上为老兔子)
第n个月 小兔子 中兔子 老兔子 兔子总数
1 0 0 0 1
2 0 1 0 1
3 1 0 1 2
4 1 1 1 3
5 1 1 2 5
。。。 。。。
。。。 。。。
#include "stdio.h"
void main()
{
long int f1,f2;
int i;
f1=1;f2=1;
for(i=1; i<=20; i++)
{
printf("%12ld %12ld ",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}
}
谁可以帮解答一下解题思路啊,我开始都不认为这个可以输出呢 - -
回复列表 (共3个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-04-21 21:39:00
斐波那契数列,数列里每一项都是前面两项之和。思路没什么太多可讲的吧
就是定下第一个月和第二个月的值,然后按照每次输出两个月的数量来输出,一共输出40个月,每4个月换行依次。输出完之后计算下面两个月的数量
板凳
dd8924 [专家分:0] 发布于 2010-04-21 22:00:00
虽然我还是不怎么明白,但是还是谢谢你。
3 楼
雪光风剑 [专家分:27190] 发布于 2010-04-21 23:04:00
开头的代码风格不好,把头部改写规范后注释如下
#include <stdio.h>
int main() //注意main如果写返回值只能是int,这是C
{
long int f1,f2;
int i;
f1=1;f2=1;//第一个月初值和第二个月初值
for(i=1; i<=20; i++)//循环计算20次
{
printf("%12ld %12ld ",f1,f2);//每次打印两个月
if(i%2==0)
printf("\n");//每两次打印,即每打印4个月的值即换行
f1=f1+f2;//计算第k个月的兔子数,k=2+2*i-1
f2=f2+f1;//计算第k+1个月的兔子数
}
}
我来回复