美文网首页
斐波那契数列-兔子算法

斐波那契数列-兔子算法

作者: 淡淡de盐 | 来源:发表于2020-08-27 22:35 被阅读0次

    兔子算法

    兔子问题,一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

    //兔子(斐波那契)
    function calculateRabbitNum($month)
    {
        if (0 == $month || 1 == $month) {
            return 1;
        }
    
        return calculateRabbitNum($month - 1) + calculateRabbitNum($month - 2);
    }
    
    var_dump(calculateRabbitNum(12));//144
    
    function getResult($month){
        $one = 1; //第一个月兔子的对数
        $two = 1; //第二个月兔子的对数
        $sum = 0; //第$month个月兔子的对数
        if($month < 3){
            return ;
        }
        for($i = 2;$i < $month; $i++){
            $sum = $one + $two;
            $one = $two;
            $two = $sum;
        }
        echo $month.'个月后共有'.$sum.'对兔子';
    }
    
    getResult(12);
    

    每个人的思考方式不同,最后还以图解结束这兔子题吧!(虽然这个题多人都在问,不过用兔子比喻多少有点……)

    解题过程就不说了和斐波那契一样,说一下用递归实现
    ,整体过程就是用
    (上上个月兔子对数)+(上个月兔子对数) = 这个月兔子对数
    ps:
    递去就是满足条件循环,不满足条件停止

    return 1;

    归来就是,很多个 1 相加,得出最后的对数

    return calculateRabbitNum($month - 1) + calculateRabbitNum($month - 2);

    也可以用下图理解:

    共8只兔子 共13只兔子

    相关文章

      网友评论

          本文标题:斐波那契数列-兔子算法

          本文链接:https://www.haomeiwen.com/subject/hjahsktx.html