递归函数
所谓的函数递归调用,就是函数可以在其声明的执行叙述之中调用执行自己。
通常在此类型的函数之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定条件下终止函数的递归调用动作,把目前流程的主控权交回上一层函数执行。因此当某个执行递归调用的函数,没有附加条件判断叙述时可能会造成无限循环的错误情形.
函数递归调用最大的好处在于可以精简程序中繁杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。
<?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);
*/