统计每个月兔子总数
Posted cing123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计每个月兔子总数相关的知识,希望对你有一定的参考价值。
题目描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
输入:
9
输出:
34
分析
1月大 | 2月大 | 3月大 | |
一月 | 1 | 0 | 0 |
二月 | 0 | 1 | 0 |
三月 | 1 | 0 | 1 |
四月 | 1 | 1 | 1 |
五月 | 2 | 1 | 2 |
六月 | 3 | 2 | 3 |
七月 | 5 | 3 | 5 |
八月 | 8 | 5 | 8 |
九月 | 13 | 8 | 13 |
十月 | 21 | 13 | 21 |
十一月 | 34 | 21 | 34 |
十二月 | 55 | 34 | 55 |
规律: 简单递推
f(月份,1月大) = f(月份,3月大) = f(月份-1,2月大) + f(月份-1,3月大)
f(月份,2月大) = f(月份-1, 1月大)
<? //递推使用 function getNum( $month ) { $oneCount = 1; $twoCount = 0; $threeCount = 0; $start = 1; while ($start < $month) { $tmp = $oneCount; $oneCount = $twoCount + $threeCount; $twoCount = $tmp; $threeCount = $oneCount; $start++; } return $oneCount+$twoCount+$threeCount; } function main() { while ($month = fgets(STDIN)) { $num = getNum(intval($month)); print $num."\n"; } } main();
优化:如果以每个月兔子数量为基础,可以发现兔子总数符合斐波拉契数列的规律
以上是关于统计每个月兔子总数的主要内容,如果未能解决你的问题,请参考以下文章
每日一题 | day18(统计每个月兔子的总数|字符串通配)
C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?