遞歸函數
所謂的函數遞歸調用,就是函數可以在其聲明的執行敘述之中調用執行自己。
通常在此類型的函數之中會附加一個條件判斷敘述,以判斷是否需要執行遞歸調用,并且在特定條件下終止函數的遞歸調用動作,把目前流程的主控權交回上一層函數執行。因此當某個執行遞歸調用的函數,沒有附加條件判斷敘述時可能會造成無限循環的錯誤情形.
函數遞歸調用最大的好處在于可以精簡程序中繁雜重復調用程序,并且能以這種特性來執行一些較為復雜的運算動作。
<?php
/**
聲明一個名稱為test的函數,用于測試遞歸
$param int $n 需要一個整數作為參數
*/
function test( $n ) { //聲明一個名為test的函數,有一個參數
echo $n." "; //在函數開始處輸出參數的值和兩個空格
if($n>0) //判斷參數是否大于0
test($n-1); //如果參數大于0則調用自己,并將參數減1后再傳入
else //判斷參數不大于0
echo " <--> "; //輸出分界字符串
echo $n." "; //在函數結束處輸出參數的值和兩個空格
}
test(10); //調用test()函數將整數10傳給參數
例 test.php
<?php
$dirname = "./phpmyadmin";
function fordir($dirname) {
//打開目錄資源
$dir = opendir($dirname);
readdir($dir);
readdir($dir);
while( $file = readdir($dir)) {
$nfile = $dirname.'/'.$file;
if(is_dir($nfile)){
echo "目錄: {$nfile}<br>";
fordir($nfile);
} else {
echo "文件: {$nfile}<br>";
}
}
closedir($dir);
//關閉
}
fordir($dirname);
/*
*
* 在函數中調用自己就是遞歸函數
*
*/
/*
function test($n) {
echo $n."<br>";
if($n > 0)
test($n-1);
else
echo "---------------<br>";
echo $n."<br>";
}
test(10);
*/