遞歸就是一個函數在它的函數體內呼叫它自己。執行遞歸函數將重複呼叫其自身,每呼叫一次就進入新的一層。遞歸函數必須有結束條件。下面跟著小編一起來學習遞歸吧。
遞迴思想就是,把一個相對複雜的問題(原始問題)轉化為一個個與原問題相似的規模較小的問題(子問題)來解決,等一個個小問題解決了,最終的大問題自然就解決了。遞歸方法只需少量的程式就可描述出解題過程所需的多次重複計算,大大減少程式的程式碼量。當然,遞歸函數也不完美,有一定的缺點,那就是遞迴函數的運作效率不高。
在PHP 中遞歸層數也不是沒有限制的,這與程式的記憶體限額有關,PHP5
允許一個程式使用128M
的內存,因此當遞歸層數過大導致128M記憶體耗盡時,程式就會產生一個致命錯誤並退出。 PHP7
允許使用256M
的記憶體。
遞歸函數就是在函數內部自己呼叫自己。執行遞歸函數將重複呼叫其自身,每呼叫一次就進入新的一層。遞歸函數必須有結束條件。當函數在一直遞推,直到遇到牆後返回,這個牆就是結束條件。所以遞歸要有兩個要素,結束條件與遞推關係。
註:函數在被呼叫執行的過程中會在記憶體裡面分配空間用於儲存臨時數據,那麼函數在執行過程中預設之間是沒有聯繫的(除了靜態變數,按引用傳,全域變數)。裡面的變數預設都是局部變量,彼此之間沒有影響。讓我們來看一個例子加深印象:
<?php function demo($num){ // if($num == 1 || $num == 2){ return 1; }else{ return demo($num - 1) + demo($num - 2); } } echo '数列第 10 位是:'.demo(10);//数列第 10 位是:55 ?>
這個例子是不是有點眼熟,這就是斐波那契數列,我們計算斐波那契數列的時候,如果使用其他方法相較而言還是有一定難度的,但是使用遞迴函數,效率就高很多了。
推薦教學:《PHP影片教學》
#以上是手把手教你學php遞歸函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!