Fonctions récursives
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 8 sur 68.
La récursion est une technique de programmation dans laquelle une fonction s'appelle elle-même pour résoudre un problème. Cela crée un comportement semblable à une boucle, mais au lieu d'utiliser des boucles traditionnelles, la fonction s'invoque de manière répétée avec des paramètres modifiés jusqu'à ce qu'elle parvienne à une solution.
Chaque fonction récursive doit avoir deux composants essentiels pour fonctionner correctement :
Cas de base : C'est la condition qui arrête la récursion. Sans elle, la fonction s'appellerait elle-même à l'infini, provoquant le plantage de votre programme. Le cas de base définit quand la fonction doit renvoyer un résultat au lieu de s'appeler à nouveau.
Étape récursive : C'est ici que la fonction s'appelle elle-même avec une version modifiée du problème d'origine, se rapprochant progressivement du cas de base.
Voici un exemple simple d'une fonction récursive qui calcule une factorielle :
<?php
function factorial($n) {
// Cas de base : la factorielle de 1 est 1
if ($n <= 1) {
return 1;
}
// Étape récursive : n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Affiche : 120
?>Dans cet exemple, factorial(5) appelle factorial(4), qui appelle factorial(3), et ainsi de suite, jusqu'à ce qu'il atteigne factorial(1) (le cas de base). Ensuite, les résultats se multiplient en remontant : 1 × 2 × 3 × 4 × 5 = 120.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCréez une fonction récursive appelée sumDigits qui prend un entier positif et renvoie la somme de ses chiffres. La fonction doit utiliser la récursion pour décomposer le nombre chiffre par chiffre.
Vous recevrez une entrée : un entier positif. Lisez l'entrée, appelez votre fonction récursive avec ce nombre, et affichez la somme de ses chiffres.
Format d'entrée : Une ligne contenant un entier positif
Sortie attendue : La somme de tous les chiffres du nombre
Aide-mémoire
La récursion est une technique de programmation où une fonction s'appelle elle-même pour résoudre un problème. Chaque fonction récursive a besoin de deux composants :
Cas de base : La condition qui arrête la récursion pour éviter les boucles infinies.
Étape récursive : Où la fonction s'appelle elle-même avec des paramètres modifiés, se rapprochant du cas de base.
Exemple d'une fonction factorielle récursive :
<?php
function factorial($n) {
// Cas de base : la factorielle de 1 est 1
if ($n <= 1) {
return 1;
}
// Étape récursive : n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Affiche : 120
?>Essayez vous-même
<?php
// Lire l'entrée
$number = intval(fgets(STDIN));
// TODO : Créez votre fonction récursive sumDigits ici
// Appeler la fonction et afficher le résultat
echo sumDigits($number);
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement