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


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


posted @ 2022-12-28 11:38  繁依Fanyi  阅读(7)  评论(0)    收藏  举报  来源