什麼是php遞歸函數?
遞歸函數即自呼叫函數,在函數體內部直接或間接的自己呼叫自己,即函數的巢狀呼叫是函數本身。通常在此類型的函數提之中會附加一個條件判斷敘述,以判斷是否需要執行遞歸調用,並且在特定的條件下終止函數的遞歸調用動作,把目前流程的主控權交回到上一層函數來執行。以此,當某個執行遞歸呼叫的函數沒有附加條件判斷敘述時,可能會造成無限迴圈的錯誤情形。
函數遞歸呼叫最大的好處在於可以精簡程式中的複雜重複呼叫程序,並且能以此特性來執行一些較為複雜的運算動作。例如,列表、動態樹形選單及遍歷目錄等操作。對應的非遞歸函數雖然效率高,但卻比較難編程,而且相對來說可讀性差。現代程式設計的目標主要是可讀性好。隨著電腦硬體效能的不斷提高,程式在更多的場合優先考慮可讀而不是高效,所以,鼓勵用遞歸函數實現程式思想。
一個簡單的遞迴呼叫實例如下所示:
<?php //声明一个函数,用于测试递归 function test($n){ echo $n." "; //在函数开始输出参数的值 if($n>0){ //判断参数是否大于0 test($n-1); //如果参数大于0则调用自己,并将参数减1后再次传入 }else{ //判断参数是不大于0 echo "<--------> "; } echo $n." "; } test(10); //调用test函数将整数10传给参数 ?>
該程式執行後輸出如下的結果:
10 9 8 7 6 5 4 3 2 1 0 <--------> 0 1 2 3 4 5 6 7 8 9 10
找到結果中後半部的數字正向順序輸出的原因
說明:在上面的實例中宣告了一個test()函數,該函數需要一個整數型的參數。在函數外面透過傳遞整數 10 作為參數呼叫 test()函數。在 test()函數體中,第一個程式碼輸出參數的值和一個空格。然後判斷條件是否成立,成立則調用自己並將參數減 1 再次傳入。開始呼叫時,它是外層調內層,內層調更內一層,直到最內層因條件不允許而必須結束。最內存結束了,輸出 85035d4d2c2d63d3f587aee1c9d8129e 作為分界符,執行呼叫之後的程式碼輸出參數的值和空格,它就會回到稍外一層繼續執行。稍外一層在結束時,退回到在稍外一層繼續執行,層層推出,直到最外層結束。執行完成以後的結果就是我們上面看到的結果。
以上就是php遞迴函數及簡單實例講解,下一章我們將介紹php實作遞歸函數的三種方法。
【相關教學推薦】
3. php實戰影片教學
#以上是什麼是php遞歸函數及簡單實例講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!