![在这里插入图片描述 C语言刷题随记 —— 疯狂的兔子_数据结构]()
文章目录
- 题目
- 思路
- 题解
- 样例输出
题目
古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
![在这里插入图片描述 C语言刷题随记 —— 疯狂的兔子_c++_02]()
思路
兔子的规律为数列 1,1,2,3,5,8,13,21… 符合斐波那契数列的变化规则,可以使用循环或者递归解这一题。
题解
① 循环
#include <stdio.h>
int main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0)
{
printf("\n"); //控制输出,每行四个
}
f1=f1+f2; //前两个月加起来赋值给第三个月
f2=f1+f2; //前两个月加起来赋值给第三个月
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
② 递归
#include <stdio.h>
long countRabbit(long f)
{
if(f==1 || f==2)
{
return 1;
}
else
{
return countRabbit(f-1) + countRabbit(f-2);
}
}
int main()
{
int month ;
int i;
printf("请输入月份:");
scanf("%d",&month);
for(i=1;i<=month;i++)
{
long f = countRabbit(i);
printf("%12ld",f);
if(i%4==0)
{
printf("\n");
}
}
return 0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
样例输出
![在这里插入图片描述 C语言刷题随记 —— 疯狂的兔子_算法_03]()
![在这里插入图片描述 C语言刷题随记 —— 疯狂的兔子_数据结构_04]()