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