Maison  >  Article  >  développement back-end  >  Explication détaillée du mécanisme de fonctionnement et exemples de récursivité en PHP

Explication détaillée du mécanisme de fonctionnement et exemples de récursivité en PHP

韦小宝
韦小宝original
2018-02-05 10:15:391568parcourir

La récursivité PHP 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écursivité en PHP. Les amis qui ne connaissent pas grand-chose à la récursivité en PHP peuvent se référer à cet article

La définition de la récursivité

La récursivité est un mécanisme par 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) ! ) . Même dans la vraie vie, la pensée récursive est visible partout : par exemple, en raison de problèmes académiques, vous avez besoin du sceau du directeur, mais le directeur dit : « Je ne le tamponnerai que si le doyen l'a tamponné quand vous le trouverez. le doyen, l'enseignant Le directeur a aussi dit : "Je ne le tamponnerai que s'il est tamponné par le doyen du département."... Jusqu'à ce que vous trouviez enfin le directeur, et après avoir obtenu le généreux cachet du directeur, il faut retourner chez le chef de département, le doyen, et enfin le directeur Stamp, le processus est le suivant :


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
?>


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
?>
trois : Utilisez des variables statiques pour compléter des fonctions récursives.

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.

Exemple 1. Parcours récursif à l'aide de variables globales

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

Exemple 2 : Parcours récursif à l'aide de variables statiques Tous les fichiers du dossier dossier

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);

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);
Résumé

Ce qui précède est un exemple d'implémentation de la récursivité en PHP introduit par l'éditeur Explication détaillée, je l'espère aide tout le monde ! !

Articles recommandés :


Algorithme récursif PHP simplifié

La fonction récursive est Une fonction auto-appelante s'appelle directement ou directement dans le corps de la fonction, mais les conditions d'auto-appel doivent être définies. Si les conditions sont remplies, la fonction elle-même est appelée...

. PHP ne nécessite pas de récursion Implémentation de l'arbre de classification Infinitus

Comment implémenter l'arbre de classification Infinitus en PHP sans récursion ? Cet article présente principalement PHP pour obtenir une classification infinie sans récursion grâce à la traversée d'arbres de pré-commande...

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!

Déclaration:
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