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

\

文章目录

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

题目

古典问题:有一对兔子,从出生后第 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语言刷题随记 —— 疯狂的兔子_i++_03

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