统计每个月兔子总数

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();

  

优化:如果以每个月兔子数量为基础,可以发现兔子总数符合斐波拉契数列的规律  

 

 

 

 

以上是关于统计每个月兔子总数的主要内容,如果未能解决你的问题,请参考以下文章

统计每个月兔子总数

统计每个月兔子的总数(HJ37)

华为机试HJ37:统计每个月兔子的总数(斐波那契数列)

每日一题 | day18(统计每个月兔子的总数|字符串通配)

C语言100个经典算法源码片段

C语言试题106之有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?