本文實(shí)例講述了PHP基于遞歸算法解決兔子生兔子問(wèn)題。分享給大家供大家參考,具體如下:
接到面試通知輾轉(zhuǎn)反側(cè),一直在默念明天改如何介紹自己的項(xiàng)目經(jīng)驗(yàn)等。
早早的起床,洗漱,把自己的總結(jié)的問(wèn)題自問(wèn)自答了一些。
匆匆吃了早飯,擠進(jìn)讓人面目猙獰的地鐵,此時(shí)什么都不顧,只盼著趕緊下地鐵。終于提前半小時(shí)到了面試地點(diǎn),再次拿出準(zhǔn)備的問(wèn)題看了幾眼,還剩15分鐘上去。跟著人力填了表格,然后給了我一個(gè)算法題。
如下:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,請(qǐng)編程輸出兩年內(nèi)每個(gè)月的兔子總數(shù)為多少?
忽然記起來(lái),這道題之前的一個(gè)朋友跟我談?wù)撨^(guò),思路是一樣的。
第一種方法(for循環(huán)實(shí)現(xiàn)):
?php
function getResult($month){
$one = 1; //第一個(gè)月兔子的對(duì)數(shù)
$two = 1; //第二個(gè)月兔子的對(duì)數(shù)
$sum = 0; //第$month個(gè)月兔子的對(duì)數(shù)
if($month 3){
return ;
}
for($i = 2;$i $month; $i++){
$sum = $one + $two;
$one = $two;
$two = $sum;
}
echo $month.'個(gè)月后共有'.$sum.'對(duì)兔子';
}
//測(cè)試:
getResult(8)
//輸出:8個(gè)月后共有21對(duì)兔子
第二種方法(遞歸):
?php
function fun($n){
if($n == 1 || $n == 2){
return 1;
}else{
return fun($n-1)+fun($n-2);
}
}
//測(cè)試:
echo fun(8)
//輸出:21
事后,也去網(wǎng)上查了一下,但是大多數(shù)代碼示例都是C語(yǔ)言、c++、java等等語(yǔ)言的。并沒(méi)有太多PHP相關(guān)的代碼示例,這兩種方法,希望可以幫到大家。
其實(shí)整個(gè)面試過(guò)程挺緊張,好在最后完成的挺漂亮。這不,復(fù)試通知來(lái)了,感謝那個(gè)千鋒PHP哥們。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- PHP遞歸的三種常用方式
- php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加
- PHP 無(wú)限分類三種方式 非函數(shù)的遞歸調(diào)用!
- php菜單/評(píng)論數(shù)據(jù)遞歸分級(jí)算法的實(shí)現(xiàn)方法
- PHP遞歸算法的簡(jiǎn)單實(shí)例
- PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP實(shí)現(xiàn)字符串翻轉(zhuǎn)功能的方法【遞歸與循環(huán)算法】
- PHP基于遞歸實(shí)現(xiàn)的約瑟夫環(huán)算法示例
- PHP使用遞歸算法無(wú)限遍歷數(shù)組示例
- php獲得文件夾下所有文件的遞歸算法的簡(jiǎn)單實(shí)例
- PHP二分查找算法示例【遞歸與非遞歸方法】
- PHP冒泡算法詳解(遞歸實(shí)現(xiàn))
- 關(guān)于PHP遞歸算法和應(yīng)用方法介紹
- PHP遞歸算法的詳細(xì)示例分析
- php全排列遞歸算法代碼
- php實(shí)現(xiàn)遞歸的三種基本方式