c语言趣味编程(5)

发布时间 2023-04-21 22:57:27作者: 我爱软工

一、问题描述

有一对兔子,从出生后的第 3 个月起每个月都生一对兔子。
 
小兔子长到第 3 个月后每个月又生一对兔子,假设所有的兔子都不死,问 30 个月内每个月的兔子总数为多少?

二、设计思路

(1)通过对前几个月的兔子总数进行分析,找出前n个月的兔子总数之前的规律;

(2)找出兔子总数的规律式子,求出答案;

(3)可以看出,每个月的兔子总数依次为 1,1,2,3,5,8,13…这就是 Fibonacci数列

三、程序流程图

 

四、伪代码

五、代码

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[31] = { 0 };
 6     a[1] = 1;
 7     a[2] = 1;
 8     int count = 0;   //用来控制换行字符的输出
 9     int i;
10     for (i = 3; i <= 30; i++)
11     {
12         a[i] = a[i - 1] + a[i - 2];
13     }
14     for (int j = 1; j <= 30; j++)
15     {
16         count++;
17         printf("%12d", a[j]);
18         if (count % 4 == 0)
19         {
20             cout << endl;
21         }
22     }
23     return 0;
24 }

运行结果:

 

六、总结

(1)如果一组元素之间存在某种关系,可以用数组来保存这组数据,可以用递归算出每个数据;