遞推法
遞推法是按照
一定的規(guī)律
來計算序列中的每個項霹购,通常是通過計算機前面的一些項來得出序列中的指定項的值。
遞歸法分兩類:
- 順推法:從已知條件出發(fā)朋腋,逐步推算出要解決的方法齐疙;
- 逆推法:從已知的結(jié)果出發(fā),用迭代表達式逐步推算出問題開始的條件旭咽,即順推法的逆過程贞奋。
- 斐波那契數(shù)列(兔子數(shù)列):有一對兔子,從出生后第三個月起每個月都生一對兔子穷绵,小兔子長到第三個月后每個月又生一對兔轿塔。假設所有兔子都不死,問每個月的兔子總數(shù)為多少?
<?php
/**
* 列舉出兔子對數(shù)
* (f1)1,(f2)1,(f3)2,(f4)3,(f5)5,(f6)8,(f7)13,(f8)21,(f9)34....(fn)x
* 可以看出規(guī)律勾缭,除了前兩個月揍障,后面每個月都是前兩個月之和
* f1=1
* f2=1
* f3=f(3-1)+f(3-2)=f2+f1=2
* ...
* fn=f(n-1)+f(n-2)
* 這里我們求第九個月的兔子對數(shù),根據(jù)遞推法-順推法俩由,根據(jù)已知條件毒嫡,逐步(循環(huán))求出結(jié)果
*/
// n:月數(shù)
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