Maison > Article > développement back-end > Que signifie la fonction récursive en php
En PHP, une fonction récursive fait référence à une fonction auto-appelante, c'est-à-dire que la fonction s'appelle directement ou indirectement dans le corps de la fonction ; lors de l'utilisation d'une fonction récursive, une condition de jugement doit être ajoutée au corps de la fonction pour déterminer ; si elle doit continuer. Effectue un appel récursif et termine l'appel récursif de la fonction lorsque la condition est remplie.
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3
Une fonction récursive est une fonction auto-appelante, c'est-à-dire que la fonction s'appelle directement ou indirectement dans le corps de la fonction . Il convient de noter que lors de l'utilisation d'une fonction récursive, une condition de jugement est généralement attachée au corps de la fonction pour déterminer si l'appel récursif doit continuer. Lorsque la condition est remplie, l'appel récursif de la fonction prendra fin.
Le plus grand avantage des fonctions récursives est qu'elles peuvent simplifier les procédures complexes et répétitives du programme et peuvent utiliser cette fonctionnalité pour effectuer des opérations plus complexes. Par exemple, des opérations telles que des listes, des menus arborescents dynamiques et une traversée de répertoires. Les fonctions non récursives correspondantes, bien qu'efficaces, sont difficiles à programmer et relativement illisibles.
Pensée récursive
L'idée principale de la récursion est de transformer un problème relativement complexe (problème d'origine) en problèmes à plus petite échelle (sous-problèmes) similaires au problème d'origine à résoudre, et d'attendre un par 1 Une fois les petits problèmes résolus, les grands problèmes finiront par être résolus.
La méthode récursive n'a besoin que d'une petite quantité de programmes pour décrire les multiples calculs répétés requis dans le processus de résolution de problèmes, réduisant ainsi considérablement la quantité de code de programme. Bien entendu, les fonctions récursives ne sont pas parfaites et présentent également certains inconvénients, c'est-à-dire que les fonctions de méthode récursive ne fonctionnent pas efficacement.
Le nombre maximum de niveaux de récursion en PHP n'est pas illimité. Ceci est lié à la limite de mémoire du programme. PHP5 permet à un programme d'utiliser 128 Mo de mémoire par défaut, lorsque le nombre de niveaux de récursion est trop grand et 128 Mo. de mémoire est épuisée, le programme générera une erreur fatale et se terminera. PHP7 autorise 256 Mo de mémoire par défaut.
La mémoire maximale autorisée par PHP peut être modifiée en modifiant le fichier php.ini, comme indiqué ci-dessous :
; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit=256M
Récursion en PHP
Pour obtenir une récursion, les deux conditions suivantes doivent être remplies :
Le sous-problème doit être la même chose que le problème d'origine, mais plus simple.
ne peut pas s'appeler de manière illimitée, il doit y avoir une sortie qui simplifie le traitement de situation non récursif.
Exemple 1 : Utiliser des fonctions récursives pour implémenter la factorielle de n !
<?php header('content-type:text/html;charset=utf-8'); function factorial($num){ //确定递归函数的出口 if($num == 1){ return 1; }else{ return $num*factorial($num - 1); } } echo '15 的阶乘是:'.factorial(15); ?>
Les résultats courants sont les suivants :
Exemple 2 : Calculez la séquence de Fibonacci.
La séquence de Fibonacci est la suivante :
1, 1, 2, 3, 5, 8, 13, 21, 34,...
Le code d'implémentation est le suivant :
<?php header('content-type:text/html;charset=utf-8'); function demo($num){ // if($num == 1 || $num == 2){ return 1; }else{ return demo($num - 1) + demo($num - 2); } } echo '数列第 10 位是:'.demo(10); ?>
Résultats d'exécution As suit :
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!