蓝桥杯1004:母牛的故事
- 难度:中等
- 解题思路:递归
- 地址:https://www.dotcpp.com/oj/problem1004.html
题目
- 题目描述
有一头母牛,它每年年初生一头小母牛。
每头小母牛从第四个年头开始,每年年初也生一头小母牛。
请编程实现在第n年的时候,共有多少头母牛?
- 输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。 - 输出格式
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。 - 样例输入
2
4
5
0 - 样例输出
2
4
6
题解
第一年 | 第二年 | 第三年 | 第四年 | 第五年 | 第六年 |
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 6 | 9 |
通过上面表格可以看出,第一年为1,第二年第一头母牛生了一头小母牛a,数量变为2,一直到第四年,小母牛a都是没有生育能力的,到了第五年开始,第二年的小母牛a开始生育一头小母牛。
设牛的总数为f(x)
那么应该有
f(1)
= 1
f(2)
= 2
f(3)
= 3
f(4)
= 4
当第五个开始时,计算公式可以表示为
去年所有的母牛f(x-1)
+ 有生育能力的母牛生出的小母牛f(x-3)
所以应该有
f(x)
= f(x - 1)
+ f(x - 3)
其中x > 4