什麼是php遞歸函數及簡單實例講解

遞歸函數即自調用函數,在函數體內部直接或者間接的本身調用本身,即函數的嵌套調用是函數自己。一般在此類型的函數提之中會附加一個條件判斷敘述,以判斷是否須要執行遞歸調用,而且在特定的條件下終止函數的遞歸調用動做,把目前流程的主控權交回到上一層函數來執行。以此,當某個執行遞歸調用的函數沒有附加條件判斷敘述時,可能會形成無限循環的錯誤情形。php

函數遞歸調用最大的好處在於能夠精簡程序中的複雜重複調用程序,而且能以這種特性來執行一些較爲複雜的運算動做。例如,列表、動態樹形菜單及遍歷目錄等操做。相應的非遞歸函數雖然效率高,但卻比較難編程,並且相對來講可讀性差。現代程序設計的目標主要是可讀性好。隨着計算機硬件性能的不斷提升,程序在更多的場合優先考慮可讀而不是高效,因此,鼓勵用遞歸函數實現程序思想。編程

一個簡單的遞歸調用實例以下所示:函數

<?php

 //聲明一個函數,用於測試遞歸

 function test($n){

   echo $n."&nbsp;";        //在函數開始輸出參數的值

   if($n>0){                //判斷參數是否大於0

     test($n-1);            //若是參數大於0則調用本身,並將參數減1後再次傳入

   }else{                   //判斷參數是不大於0

     echo "<-------->  ";

   }

   echo $n."&nbsp;";

 }

 test(10);                   //調用test函數將整數10傳給參數

?>

該程序執行後輸出以下的結果:性能

1測試

10 9 8 7 6 5 4 3 2 1 0 <--------> 0 1 2 3 4 5 6 7 8 9 10spa

找到結果中後半部分的數字正向順序輸出的緣由設計

說明:在上面的實例中聲明瞭一個 test()函數,該函數須要一個整型的參數。在函數外面經過傳遞整數 10 做爲參數調用 test()函數。在 test()函數體中,第一條代碼輸出參數的值和一個空格。而後判斷條件是否成立,成立則調用本身並將參數減 1 再次傳入。開始調用時,它是外層調內層,內層調更內一層,直到最內層因爲條件不容許必須結束。最內存結束了,輸出 <--------> 做爲分界符,執行調用以後的代碼輸出參數的值和空格,它就會回到稍外一層繼續執行。稍外一層在結束時,退回到在稍外一層繼續執行,層層推出,直到最外層結束。執行完成之後的結果就是咱們上面看到的結果。code

相關文章
相關標籤/搜索