C语言刷题随记 —— 疯狂的兔子_c语言

文章目录

  • ​​题目​​
  • ​​思路​​
  • ​​题解​​
  • ​​样例输出​​

题目

古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

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; //前两个月加起来赋值给第三个月
}
}

② 递归

#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;

}

样例输出

C语言刷题随记 —— 疯狂的兔子_赋值_03

C语言刷题随记 —— 疯狂的兔子_算法_04