一、问题描述
有一对兔子,从出生后的第 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)如果一组元素之间存在某种关系,可以用数组来保存这组数据,可以用递归算出每个数据;