PHP中递归实现示例的详细说明
递归的定义
递归(http :/en . Wikipedia . org/wiki/recursive)是函数调用本身(直接或间接)的一种机制。这个强大的想法可以让一些复杂的概念变得极其简单。超越计算机科学,尤其是数学,递归的概念并不少见。比如递归解释中最常用的斐波那契序列就是一个非常典型的例子,而其他的,比如层次(n!)也可以转换成递归定义(n!=n*(n-1)!即使在现实生活中,递归思想也随处可见:比如因为学术问题,需要校长盖章,但校长说:“只有院长盖章,我才会盖章。”当你找到院长时,院长说:“只有院长盖章,我才会盖章。”……直到最后找到班主任,拿到班主任慷慨的印章后,还要还给院长,院长,最后还有校长的印章。
递归函数是一个调用自身的函数。编写递归函数时要小心,因为可能有无限递归。您必须确保有足够的方法来终止递归。
1.使用参数引用完成递归函数。操作是同一个内存地址。
?PHP $ I=1;功能测试($ I){ echo $ I;$ I;if($ I 10){ test($ I);} }测试($ I);//输出123456789 test($ I);//输出10?第二,使用全局变量完成递归函数。
用函数域中的全局语句导入的真实全局变量实际上建立了对全局变量的引用。在这个例子中,test()函数中的$i实际上只在程序的第一行($ I=1;变量$i的一个应用);
?PHP $ I=1;函数测试(){ global $ I;echo $ I;$ I;if($ I 10){ test();} }测试();//输出123456789 test();//输出10?第三,使用静态变量完成递归函数。
static的作用是只在第一次调用函数时初始化变量,并保留变量值。
?php函数测试(){ static $ I=1;echo $ I;$ I;if($ I 10){ test();} $ I-;//每层递归结束时自动递减,可以帮助理解递归函数}test()的执行过程;//输出123456789 test();//输出123456789?例1。使用全局变量时递归遍历文件夹下的所有文件
函数GetFiles($ dir){ global $ arr;if(is _ dir($ dir)){ $ hadle=@ opendir($ dir);while($ file=readdir($ hadle)){ if(!in_array($file,array(' . '), '.'))){$dirr=$dir。'/'.$ fileif(is _ dir($ dirr)){ getFiles($ dirr);}else{array_push($arr,$ dirr);} } } } } $ arr=array();getFiles(' e :/log ');print _ r($ arr);示例2:使用静态变量时递归遍历文件夹下的所有文件
函数getFiles($ dir){ static $ arr=array();if(is _ dir($ dir)){ $ hadle=opendir($ dir);while($ file=readdir($ hadle)){ if(!in_array($file,array(' . '),'.'))){$dirr=$dir。'/'.$ fileif(is _ dir($ dirr)){ getFiles($ dirr);}else{array_push($arr,$ dirr);} } } }返回$ arr} $ rows=array();$ rows=getFiles(' e :/log ');print _ r($ row);摘要
以上是边肖介绍的PHP中递归的实现例子的详细说明,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:PHP中递归实现示例的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。