递归的一些应用(一)遍历文件夹
2018-06-22 04:54:21来源:未知 阅读 ()
函数的递归调用
递归的含义
递归其实也只是一种算法上的描述,不是一种新的语法!
有时候,我们解决问题的时候,会遇到这种情况,当我们把一个大的问题按照某种解决方案分成若干个小的问题的时候,发现这些小问题的解决方案其实和刚才大问题的解决方案又是一样的!
典型的,比如:求阶乘!
10! = 10 * 9!
9! = 9 * 8!
8! = 8 * 7!
……
语法上,函数的递归调用,就是函数在执行的过程中自己又调用自己!
递归的两个要点:
1, 递归的出口:就是指什么时候停止递归调用
2, 递归点:就是指什么时候开始使用递归调用
在写递归调用的时候,先写递归的出口,再写递归点!
所以,递归调用的特点是:代码书写比较简单,但是执行的时候,比较消耗内存资源!
也可以说,递归的本质就是以空间换取时间!
下面是通过递归遍历文件夹的一个小案例:
代码:
<?php /** * 定义遍历指定路径下文件与文件夹,通过递归的方法 * @param $dir string */ function dirs($dir,$level=0){ //列出指定路径中的文件和目录 $files=scandir($dir); //遍历所有的目录 foreach($files as $file){ //重复一个字符串 echo str_repeat(' ',$level*4); //拼接路径 $tmpdir=$dir.'/'.$file; //判断是否是一个目录,文件夹 if(is_dir($tmpdir)){ //让文件夹变成红色 echo "<font style='color:red;'>$tmpdir</font><br/>"; //目录下有两个隐藏文件.和..,排除掉 if($file !='.' && $file !='..'){ //通过递归的方法,调用自己,进行遍历 dirs($tmpdir,$level+1);//递归点 } }else{ //如果不是一个目录就直接显示这个文件 echo $file.'<br/>'; } } } dirs('d:/sphinx');
效果:
下篇我会用递归的方法来实现无限极分类的小案例。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 学PHP经常问的一些问题 2020-03-10
- 详解cookie验证的php应用的一种SSO解决办法 2019-12-17
- 详解PHP序列化反序列化的方法 2019-12-08
- JSON在PHP中的应用介绍 2019-11-16
- 应用php抽象类的方法 2019-10-31
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash