Bases de la récursivité
Fait partie de la section Fondamentaux du Journey C de Coddy. Leçon 50 sur 63.
La récursion est une technique dans laquelle une fonction s’appelle elle-même pour résoudre un problème. C’est comme résoudre un grand problème en le décomposant en problèmes plus petits et similaires.
Examinons une simple fonction récursive qui calcule la factorielle :
int factorial(int n) {
// Cas de base : la factorielle de 0 ou 1 est 1
if (n <= 1) {
return 1;
}
// Cas récursif : n! = n * (n-1)!
return n * factorial(n - 1);
}Toute fonction récursive a besoin de :
- Un cas de base pour arrêter la récursion
- Un cas récursif qui se rapproche du cas de base
Par exemple, calculons factorial(3) :
- factorial(3) appelle factorial(2)
- factorial(2) appelle factorial(1)
- factorial(1) renvoie 1 (cas de base)
- factorial(2) renvoie 2 * 1 = 2
- factorial(3) renvoie 3 * 2 = 6
Défi
FacileCréez une fonction nommée sumToN qui utilise la récursivité pour calculer la somme des nombres de 1 à n.
Par exemple :
- sumToN(3) doit retourner 6 (1 + 2 + 3)
- sumToN(5) doit retourner 15 (1 + 2 + 3 + 4 + 5)
Votre fonction doit :
- Utiliser un cas de base lorsque n vaut 1 (retourner 1)
- Sinon, retourner n plus la somme des nombres de 1 à (n-1)
Essayez vous-même
#include <stdio.h>
// Écrivez votre fonction sumToN ici
// Ne modifiez pas la fonction main()
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Flux de contrôle
Instruction ifIf - ElseElse-IfCas switchOpérateur conditionnel ternaireDéfi récapitulatifIf - Else imbriqué7Fonctions
Déclarer une fonctionTypes de retourParamètresDéfi récapitulatif n° 1Bases de la récursivitéPrototypes de fonctionDéfi récapitulatif n° 22Variables
Types de donnéesEntierVirgule flottante - DoubleCaractèresBooléensConstantesBases de printfRègles de nommage des variablesConversion de type - Partie 1Conversion de type - Partie 2Défi récapitulatif3Opérateurs
Opérateurs arithmétiquesOpérateur moduloIncrémentation/DécrémentationOpérateurs d’affectationOpérateurs relationnelsOpérateurs logiques — Partie 1Opérateurs logiques — Partie 2Opérateurs logiques — Partie 3Défi récapitulatifEntraînez-vous par vous-même : Compilateur C en ligne