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

韦小宝
Libérer: 2023-03-19 21:26:02
original
1618 Les gens l'ont consulté

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
?>
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
<); 🎜>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 
?>
Copier après la connexion

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);
Copier après la connexion

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

É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