【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)

文章目录

  • 前言
  • 一、题目描述
  • 二、题目分析
  • 三、解题
    • 1.解题方法一------ 循环 ------
      • 方法1
      • 方法2
    • 2.解题方法二------ 数组 ------
    • 2.解题方法三------ 递归(不推荐) ------
      • 程序运行代码
  • 总结


前言

本系列为C语言菜鸟100道基础经典例题详解刷题系列。每天1题,点滴成长,一起逆袭。


一、题目描述

题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
以上实例输出结果为:

       1           1           2           3
       5           8          13          21
      34          55          89         144
     233         377         610         987
    1597        2584        4181        6765
   10946       17711       28657       46368
   75025      121393      196418      317811
  514229      832040     1346269     2178309
 3524578     5702887     9227465    14930352
24157817    39088169    63245986   102334155

二、题目分析

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…,即下个月是上两个月之和(从第三个月开始)。
【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第1张图片
题目变式
【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第2张图片>

三、解题

1.解题方法一------ 循环 ------

方法1

【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第3张图片

【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第4张图片

方法2

【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第5张图片
【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第6张图片

#include
int main()
{
    int f1=1,f2=1,i;
    for(i=1;i<=20;i++)
    {
        printf("%12d%12d",f1,f2);//左补空格(右对齐)
        if(i%2==0) printf("\n");//控制换行
        f1=f1+f2;
        f2=f1+f2;
    }
    return 0;
}

2.解题方法二------ 数组 ------

#include
int main(){
	int a[40]={1,1},i;
	for(i=2;i<40;i++){
		a[i]=a[i-1]+a[i-2];
	}
	for(i=0;i<40;i++){
		if(i%4==0){
			printf("\n");
		}
		printf("%12d",a[i]);
	}
	return 0;
}

2.解题方法三------ 递归(不推荐) ------

程序运行代码

//递归法实现斐波那契数列问题求解
#include
int fib(int n)
{
 if (n <= 2)
 {
  return 1;
 }
 return fib(n - 1) + fib(n - 2);
}
int main()
{
 int n;
 scanf("%d", &n);
 int ret = fib(n);
 printf("%d\n", ret);
 return 0;
}

总结

【C语言|菜鸟教程】100道进阶经典例题详细解答(实例11-题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每)_第7张图片

你可能感兴趣的:(【C语言,c语言,算法,开发语言)