Online C Compiler
Ouvrir dans le compilateur

Édition pédagogique en français

Factorielle en C

Calculez le produit de 1 à N en vérifiant les limites du type numérique.

Ouvrir dans le compilateur

Factorielle en C
Calculez le produit de 1 à N en vérifiant les limites du type numérique.

Pour un entier non négatif N, N! est le produit de 1 à N ; par définition, 0! = 1. Initialisez l’accumulateur à un et multipliez les facteurs, ou utilisez une récursion avec cas de base.

La factorielle croît rapidement. Vérifiez la borne du type avant de multiplier ; long long possède aussi une limite. Un débordement d’entier signé ne fournit pas de résultat valide.

Testez N = 0, N = 1 et la plus grande valeur prise en charge. La version itérative utilise O(N) de temps et O(1) d’espace auxiliaire.

Code source

#include <stdio.h>

unsigned long long calculate_factorial_iterative(int n) {
    if (n < 0) return 0;
    unsigned long long fact = 1;
    for (int i = 1; i <= n; i++) {
        fact *= (unsigned long long)i;
    }
    return fact;
}

unsigned long long calculate_factorial_recursive(int n) {
    if (n <= 1) return 1;
    return (unsigned long long)n * calculate_factorial_recursive(n - 1);
}

int main(void) {
    int numbers[] = {0, 1, 5, 7, 10, 12};
    int count = sizeof(numbers) / sizeof(numbers[0]);

    printf("--- C Factorial Computation Summary ---\n");
    for (int i = 0; i < count; i++) {
        int val = numbers[i];
        printf("%2d! = %-12llu (Recursive: %llu)\n",
               val,
               calculate_factorial_iterative(val),
               calculate_factorial_recursive(val));
    }

    return 0;
}
Ouvrir dans le compilateur

Résultat attendu

--- C Factorial Computation Summary ---
 0! = 1            (Recursive: 1)
 1! = 1            (Recursive: 1)
 5! = 120          (Recursive: 120)
 7! = 5040         (Recursive: 5040)
10! = 3628800      (Recursive: 3628800)
12! = 479001600    (Recursive: 479001600)

Questions fréquentes

Pourquoi le code et certains résultats restent-ils en anglais ?

Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.