使用php了解9大算法思想

递推法

递推法是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值。

递归法分两类:
  • 顺推法:从已知条件出发,逐步推算出要解决的方法;
  • 逆推法:从已知的结果出发,用迭代表达式逐步推算出问题开始的条件,即顺推法的逆过程。
  1. 斐波那契数列(兔子数列):有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔。假设所有兔子都不死,问每个月的兔子总数为多少?
<?php
/**
 * 列举出兔子对数
 * (f1)1,(f2)1,(f3)2,(f4)3,(f5)5,(f6)8,(f7)13,(f8)21,(f9)34....(fn)x
 * 可以看出规律,除了前两个月,后面每个月都是前两个月之和
 * f1=1 
 * f2=1
 * f3=f(3-1)+f(3-2)=f2+f1=2
 * ...
 * fn=f(n-1)+f(n-2)
 * 这里我们求第九个月的兔子对数,根据递推法-顺推法,根据已知条件,逐步(循环)求出结果
 */

// n:月数
function rabbit($n)
{
    if ($n<3) {
        return 1;
    }
    $data=array();
    $data[1]=1;
    $data[2]=1;
    for ($i=3; $i <= $n; $i++) { 
        $data[$i]=$data[$i-1]+$data[$i-2];
        // echo $data[$i]."<br />";
    }
    return $data[$n];
}

echo rabbit(9);

php在线面试题集:http://cainiaophp.com/
php面试讨论群:536633782

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 随笔吴兴华巷口的小学校在五点钟关门了,静默重新阔步起来,唯有几丝幼小者的啜泣,似乎被人留下。炊烟凝定在空中,木叶如...
    段学生阅读 886评论 0 2
  • 我和妈妈跟姑姑去郊游,来到了郊外,我和我的妹妹走进去了,走着就看见了会跑的鸵鸟,我考验了一下我的妹妹。我说...
    月康日健阅读 420评论 0 0
  • 好想我为了家不辞辛劳的时候 你跟我说 别那么辛苦了 我养你 掷地有声 好想每天下班 你都会来接我 风雨无阻 好想每...
    乐加雪阅读 303评论 0 0