本文實例講述了PHP基于遞歸算法解決兔子生兔子問題。分享給大家供大家參考,具體如下:
接到面試通知輾轉反側,一直在默念明天改如何介紹自己的項目經驗等。
早早的起床,洗漱,把自己的總結的問題自問自答了一些。
匆匆吃了早飯,擠進讓人面目猙獰的地鐵,此時什么都不顧,只盼著趕緊下地鐵。終于提前半小時到了面試地點,再次拿出準備的問題看了幾眼,還剩15分鐘上去。跟著人力填了表格,然后給了我一個算法題。
如下:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,請編程輸出兩年內每個月的兔子總數為多少?
忽然記起來,這道題之前的一個朋友跟我談論過,思路是一樣的。
第一種方法(for循環實現):
- <?php
- 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(8)
- //輸出:8個月后共有21對兔子
第二種方法(遞歸):
- <?php
- function fun($n){
- if($n == 1 || $n == 2){
- return 1;
- }else{
- return fun($n-1)+fun($n-2);
- }
- }
- //測試:
- echo fun(8)
- //輸出:21
事后,也去網上查了一下,但是大多數代碼示例都是C語言、c++、java等等語言的。并沒有太多PHP相關的代碼示例,這兩種方法,希望可以幫到大家。
其實整個面試過程挺緊張,好在最后完成的挺漂亮。這不,復試通知來了,感謝那個千鋒PHP哥們。
新聞熱點
疑難解答