Explication détaillée de la récursivité en PHP

墨辰丷
Libérer: 2023-03-26 09:16:02
original
3149 Les gens l'ont consulté

Recursive (http://en.wikipedia.org/wiki/Recursive) est un mécanisme dans lequel une fonction s'appelle (directement ou indirectement). Cette idée puissante peut rendre certains concepts complexes extrêmement simples. Cet article présente principalement les exemples détaillés d'implémentation de la récursion en PHP. Les amis qui en ont besoin peuvent se référer à

Définition de la récursion

Récursion (http). :/en.wikipedia.org/wiki/Recursive) est un mécanisme dans lequel une fonction s'appelle (directement ou indirectement). Cette idée puissante peut rendre certains concepts complexes extrêmement simples. En dehors de l’informatique, notamment en mathématiques, le concept de récursion est courant. Par exemple : la séquence de Fibonacci, la plus couramment utilisée pour expliquer la récursion, en est un exemple très typique, et d'autres comme les niveaux (n !) peuvent également être transformées en définitions récursives (n ! = n*(n-1) ! ) .

Une fonction récursive est une fonction qui s'appelle elle-même. Soyez prudent lorsque vous écrivez des fonctions récursives, car elles peuvent réapparaître indéfiniment. Vous devez vous assurer qu'il existe des moyens adéquats pour mettre fin à la récursion.

1 : Utilisez la référence de paramètre pour compléter la fonction récursive. L'opération est la même adresse mémoire.

<?php
$i=1; 
function test(&$i) 
{
echo $i; 
$i++; 
 if ($i < 10) 
{ 
test($i);
} 
} 
test($i);// 输出123456789
test ( $i );// 输出10
?>
Copier après la connexion

Deux : utilisez des variables globales pour compléter la fonction récursive.

Une vraie variable globale importée avec l'instruction globale à l'intérieur du domaine de fonction établit en fait une référence à la variable globale. Dans l'exemple, $i à l'intérieur de la fonction test() n'est en fait qu'une application de la variable $i dans la première ligne du programme ($i = 1;

<?php 
$i = 1 ;
function test ()
{ 
global $i ;
 echo $i ;
$i++; 
 if ($i <10 ) 
{ 
test();
} 
} 
test();// 输出123456789
test ();// 输出10
?>
Copier après la connexion
<); 🎜>

3 : Utilisez des variables statiques pour compléter la fonction récursive.

Le rôle du statique : initialiser la variable uniquement lorsque la fonction est appelée pour la première fois, et conserver la valeur de la variable.

<?php 
function test () 
{ 
  static $i = 1 ; 
  echo $i ;
$i ++; 
  if ( $i < 10 ) { 
     test ();
  } 
  $i --;// 在每一层递归结束时自减,这一句可以帮助理解递归函数的执行过程 
}
test();// 输出123456789
test();// 输出123456789 
?>
Copier après la connexion

Exemple 1. Parcourez de manière récursive tous les fichiers d'un dossier à l'aide de variables globales

function getFiles($dir)
{
global $arr;
if(is_dir($dir)){
$hadle = @opendir($dir);
while($file=readdir($hadle) )
{
if(!in_array($file,array(&#39;.&#39;, &#39;..&#39;)) )
{
$dirr = $dir.&#39;/&#39;.$file;
if(is_dir($dirr))
{
getFiles($dirr);
}else{
array_push($arr, $dirr);
}
}
}
}
}
$arr = array();
getFiles(&#39;E:/logs&#39;);
print_r($arr);
Copier après la connexion

Exemple 2 : parcourir de manière récursive tous les fichiers d'un dossier à l'aide de variables statiques

function getFiles ($dir)
{
static $arr = array();
if(is_dir($dir)){
$hadle = opendir($dir);
while($file=readdir($hadle))
{
if(!in_array($file,array(&#39;.&#39;,&#39;..&#39;)) )
{
$dirr = $dir."/".$file;
if(is_dir($dirr))
{
getFiles ($dirr);
}else{
array_push($arr,$dirr);
}
}
}
}
return $arr;
}
$rows= array();
$rows = getFiles (&#39;E:/logs&#39;);
print_r($rows);
Copier après la connexion

Recommandations associées :

Explication détaillée de l'algorithme récursif PHP

thinkPHP implémente une colonne de boucle récursive et la génère selon la structure arborescente infinie

PHP implémente des opérations d'arbre binaire de traversée pré-commande/dans-commande/post-commande basées sur un algorithme non récursif

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!