PHP 再帰は、関数がそれ自体を (直接または間接的に) 呼び出すメカニズムです。この強力なアイデアにより、一部の複雑な概念が非常にシンプルになります。この記事では主にPHPの再帰の詳細な実装例を紹介します。PHPの再帰についてよく知らない人はこの記事を参照してください
再帰の定義
再帰とは、それ自体を(直接的または間接的に)呼び出す関数です。 ) ) は、この強力なアイデアにより、一部の複雑な概念を非常にシンプルにすることができるメカニズムです。コンピューター サイエンスの外、特に数学では、再帰の概念が一般的です。たとえば、再帰を説明するために最も一般的に使用されるフィボナッチ数列は非常に典型的な例であり、階層 (n!) などの他の数列も再帰定義 (n! = n*(n-1)!) に変換できます。 ) 現実の生活でも、再帰的思考は随所に見られます。たとえば、学業上の問題で校長の印鑑が必要ですが、校長は「生徒部長が持っている場合にのみ印鑑を押します」と言います。学部長、先生を見つけてください 部長も「学部長の捺印があった場合にのみスタンプを押します」とおっしゃっていました… ようやく校長先生を見つけるまで、そして校長先生から寛大なハンコをもらった後、学部長、学部長、そして最後に校長に戻る必要があります。スタンプのプロセスは次のとおりです。
再帰関数 は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な手段があることを確認する必要があります。
1: パラメーター参照を使用して再帰関数を完成させます。操作は同じメモリアドレスです。
<?php $i=1; function test(&$i) { echo $i; $i++; if ($i < 10) { test($i); } } test($i);// 输出123456789 test ( $i );// 输出10 ?>
2 つ: グローバル変数を使用して再帰関数を完成させます。
関数ドメイン内の global ステートメントでインポートされた実際のグローバル変数は、実際にグローバル変数への参照を確立します。この例では、test() 関数内の $i は、実際にはプログラムの最初の行にある変数 $i の単なる適用です ($i = 1;)。 3: 静的変数を使用して、再帰関数。
staticの役割:関数が初めて呼び出されたときのみ変数を初期化し、変数の値を保持します。 <?php
$i = 1 ;
function test ()
{
global $i ;
echo $i ;
$i++;
if ($i <10 )
{
test();
}
}
test();// 输出123456789
test ();// 输出10
?>
例 1. グローバル変数を使用する場合、フォルダー内のすべてのファイルを再帰的に走査する
<?php function test () { static $i = 1 ; echo $i ; $i ++; if ( $i < 10 ) { test (); } $i --;// 在每一层递归结束时自减,这一句可以帮助理解递归函数的执行过程 } test();// 输出123456789 test();// 输出123456789 ?>
例 2: 静的変数を使用する場合、フォルダー内のすべてのファイルを再帰的に走査する
function getFiles($dir) { global $arr; if(is_dir($dir)){ $hadle = @opendir($dir); while($file=readdir($hadle) ) { if(!in_array($file,array('.', '..')) ) { $dirr = $dir.'/'.$file; if(is_dir($dirr)) { getFiles($dirr); }else{ array_push($arr, $dirr); } } } } } $arr = array(); getFiles('E:/logs'); print_r($arr);
上記は詳細です編集者が紹介するPHPにおける再帰の実装例を解説していますので、お役に立てれば幸いです。 ! おすすめ記事:
PHPの再帰アルゴリズムの簡略化
再帰関数は、それ自体を直接または関数本体内で直接呼び出しますが、自己呼び出しの条件は次のとおりです。条件を満たした場合、関数自体を呼び出します...
phpを再帰なしで無限分類木を実装するにはどうすればよいですか?この記事では主に、ツリーの事前順序走査によって再帰なしで無限分類を実現する PHP を紹介します...
以上がPHPの動作仕組みと再帰の例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。