遞歸函數(shù)
所謂的函數(shù)遞歸調(diào)用,就是函數(shù)可以在其聲明的執(zhí)行敘述之中調(diào)用執(zhí)行自己。
通常在此類型的函數(shù)之中會(huì)附加一個(gè)條件判斷敘述,以判斷是否需要執(zhí)行遞歸調(diào)用陋守,并且在特定條件下終止函數(shù)的遞歸調(diào)用動(dòng)作,把目前流程的主控權(quán)交回上一層函數(shù)執(zhí)行鹏浅。因此當(dāng)某個(gè)執(zhí)行遞歸調(diào)用的函數(shù)嗅义,沒有附加條件判斷敘述時(shí)可能會(huì)造成無限循環(huán)的錯(cuò)誤情形.
函數(shù)遞歸調(diào)用最大的好處在于可以精簡(jiǎn)程序中繁雜重復(fù)調(diào)用程序屏歹,并且能以這種特性來執(zhí)行一些較為復(fù)雜的運(yùn)算動(dòng)作隐砸。
<?php
/**
聲明一個(gè)名稱為test的函數(shù),用于測(cè)試遞歸
$param int $n 需要一個(gè)整數(shù)作為參數(shù)
*/
function test( $n ) { //聲明一個(gè)名為test的函數(shù)蝙眶,有一個(gè)參數(shù)
echo $n." "; //在函數(shù)開始處輸出參數(shù)的值和兩個(gè)空格
if($n>0) //判斷參數(shù)是否大于0
test($n-1); //如果參數(shù)大于0則調(diào)用自己季希,并將參數(shù)減1后再傳入
else //判斷參數(shù)不大于0
echo " <--> "; //輸出分界字符串
echo $n." "; //在函數(shù)結(jié)束處輸出參數(shù)的值和兩個(gè)空格
}
test(10); //調(diào)用test()函數(shù)將整數(shù)10傳給參數(shù)
例 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);
//關(guān)閉
}
fordir($dirname);
/*
*
* 在函數(shù)中調(diào)用自己就是遞歸函數(shù)
*
*/
/*
function test($n) {
echo $n."<br>";
if($n > 0)
test($n-1);
else
echo "---------------<br>";
echo $n."<br>";
}
test(10);
*/