PHP では、再帰アルゴリズムは、私たちが備えている数少ないデータ トラバーサル手法の 1 つです。再帰を使用した便利なものをいくつか紹介します。
簡単な再帰の例を見てみましょう
例1
コードは次のとおりです |
コードをコピー |
関数デモ($a) {
静的 $sum=1;
if($a > 1){
$sum*=$a;
デモ(--$a);
}その他{
$a=$sum;
}
$sum を返します。
}
エコーデモ(10);
例 2 |
ディレクトリを横断する
コードは次のとおりです
コードをコピー
|
|
クラスリストディレクトリ{
var $深さ;
var $ディレクトリ名;
var $list;
var $tostring;
関数リストdir($dir){
$this->dirname=$dir;
$this->深さ=0;
$this->tostring=””;
}
//結果を多次元配列に保存します
関数 getlist($dir=""){
if($dir==”")$dir=$this->ディレクトリ名;
$d=@dir($dir);
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->深さ+=1;
$this->getlist($path);
}その他{
$this->リスト[$this->深さ][]=$item;
}
}
}
$this->リスト[$this->深さ]['ディレクトリ']=$dir;
$this->深さ-=1;
$d->close();
$this->リストを返す;
}
//キャラクターの変身結果
関数tostring($dir=""){
if($dir==”")$dir=$this->ディレクトリ名;
$d=@dir($dir);
$this->tostring.=”n”;
$this->tostring.=”ディレクトリ:”.$dir.”n”;
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->深さ+=1;
$this->tostring($path);
}その他{
$this->tostring.=” - ”.$item.”
n”;
}
}
}
$this->深さ-=1;
$d->close();
$this->tostring.=” n”;
$this->tostringを返す;
}
}
$wapdir=”jquery”;
$d=新しいリストディレクトリ($wapdir);
echo $d->tostring();
?>
出力結果:
ディレクトリ:jquery
- jquery-1.3.2.js
- jquery-1.3.2.min.js
- jquery-1.3.2-vsdoc2.js
- test.html
- common.js
ディレクトリ:jquery/d
- common.js
- jquery-1.3.2.js
|
http://www.bkjia.com/PHPjc/632807.html
www.bkjia.com
本当http://www.bkjia.com/PHPjc/632807.html技術記事 PHP では、再帰アルゴリズムは数少ないデータ トラバーサル手法の 1 つです。再帰を使用した便利な機能をいくつか紹介します。 簡単な再帰の例を見てください...