在php中递归算法是我们比得不多的一种数据遍历方式了,下面我来给大家介绍一下利用递归来做一下用的东西吧,看一个简单的递归实例.
例1,代码如下:
- function demo($a) {
-
- static $sum=1;
-
- if($a > 1){
-
- $sum*=$a;
-
- demo(--$a);
-
- }else{
-
- $a=$sum;
-
- }
-
- return $sum;
-
- }
- echo demo(10);
例2,遍历目录,代码如下:
- <?php
- class listdir{
- var $depth;
- var $dirname;
- var $list;
- var $tostring;
-
- function listdir($dir){
- $this->dirname=$dir;
- $this->depth=0;
- $this->tostring=”";
- }
-
-
- function getlist($dir=”"){
- if($dir==”")$dir=$this->dirname;
- $d=@dir($dir);
- while(false!==($item=$d->read()))
- {
- if($item!=”.”&&$item!=”..”)
- {
- $path=$dir.”/”.$item;
- if(is_dir($path)){
- $this->depth+=1;
- $this->getlist($path);
- }else{
- $this->list[$this->depth][]=$item;
- }
- }
- }
- $this->list[$this->depth]['directory']=$dir;
- $this->depth-=1;
- $d->close();
- return $this->list;
- }
-
-
-
- function tostring($dir=”"){
- if($dir==”")$dir=$this->dirname;
- $d=@dir($dir);
- $this->tostring.=”<UL>n”;
- $this->tostring.=”Directory:”.$dir.”n”;
- while(false!==($item=$d->read()))
- {
- if($item!=”.”&&$item!=”..”)
- {
- $path=$dir.”/”.$item;
- if(is_dir($path)){
- $this->depth+=1;
- $this->tostring($path);
- }else{
- $this->tostring.=”<LI>”.$item.”</LI>n”;
- }
- }
- }
- $this->depth-=1;
- $d->close();
- $this->tostring.=”</UL>n”;
- return $this->tostring;
- }
- }
- $wapdir=”jquery”;
- $d=new listdir($wapdir);
- echo $d->tostring();
- ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|