Édition pédagogique en français
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 compilateurRé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.