Révéler les secrets des fonctions récursives en PHP pour les gens ordinaires
P粉211600174
P粉211600174 2023-10-17 08:41:23
0
2
713

Quelqu'un peut-il m'expliquer les fonctions récursives en PHP (sans utiliser Fibonacci) en termes simples et à l'aide d'exemples ? Je regarde un exemple mais Fibonacci est complètement perdu pour moi !

Merci d'avance ;-) De plus, à quelle fréquence les utilisez-vous dans le développement Web ?

P粉211600174
P粉211600174

répondre à tous(2)
P粉709307865

Un exemple serait d'imprimer chaque fichier dans n'importe quel sous-répertoire d'un répertoire donné (s'il n'y a pas de liens symboliques dans ces répertoires, cela pourrait interrompre la fonctionnalité d'une manière ou d'une autre). Le pseudo code pour imprimer tous les fichiers est le suivant :

function printAllFiles($dir) {
    foreach (getAllDirectories($dir) as $f) {
        printAllFiles($f); // here is the recursive call
    }
    foreach (getAllFiles($dir) as $f) {
        echo $f;
    }
}

L'idée est d'imprimer d'abord tous les sous-répertoires, puis d'imprimer les fichiers du répertoire courant. Cette idée fonctionne pour tous les sous-répertoires, c'est pourquoi cette fonction est appelée de manière récursive pour tous les sous-répertoires.

Si vous voulez essayer cet exemple, vous devez consulter le répertoire spécial ...,否则你会陷入调用 printAllFiles(". ") 一直如此。此外,您必须检查要打印的内容以及当前的工作目录是什么(请参阅opendir()getcwd()...).

P粉604669414

Terme du profane :

Une fonction récursive est une fonction qui s'appelle elle-même

Allez un peu plus loin :

Si une fonction continue de s'appeler, comment sait-elle quand s'arrêter ? Vous définissez une condition, appelée scénario de base. Le cas de base indique à notre appel récursif quand s'arrêter, sinon il bouclera à l'infini.

Pour moi, un excellent exemple dont on peut tirer des leçons est Factorial一个>. D'après les commentaires ci-dessous, il semble que la fonction factorielle soit un peu trop lourde, je la laisse ici juste au cas où vous en auriez besoin.

function fact($n) {
  if ($n === 0) { // our base case
     return 1;
  }
  else {
     return $n * fact($n-1); // 

Concernant l'utilisation de fonctions récursives dans le développement web, personnellement, je n'utilise pas d'appels récursifs. Non pas que je pense que s'appuyer sur la récursivité soit une mauvaise pratique, mais cela ne devrait pas être votre premier choix. S'ils sont mal utilisés, ils peuvent être mortels.

Bien que je ne puisse pas rivaliser avec l'exemple de table des matières, j'espère que cela vous aidera.

(20/04/10) Mise à jour :

Il est également utile de vérifier cette question, où la réponse acceptée démontre en termes simples comment fonctionnent les fonctions récursives. Même si la question du PO implique Java, les concepts sont les mêmes,

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal