Édition pédagogique en français
Prototypes et récursion en C
Déclarez avant l’appel et modifiez les données externes avec des pointeurs valides.

Un prototype fixe retour et paramètres ; la définition doit correspondre. Les arguments sont copiés : changer un paramètre ordinaire ne change pas la variable de l’appelant.
Pour échanger deux valeurs de l’appelant, passez leurs adresses et écrivez à travers les pointeurs. On parle parfois de passage par référence, mais le mécanisme C transmet toujours la valeur du pointeur.
Pour la récursion, définissez d’abord le cas de base et assurez-vous que chaque appel réduit le problème. Testez de petites entrées et tenez compte de la pile.
Code source
#include <stdio.h>
#include <stdlib.h>
// Function prototypes
unsigned long long factorial(unsigned int n);
void swap(int *a, int *b);
int add(int x, int y);
int main(void) {
int a = 15, b = 30;
printf("1. Sum function: %d + %d = %d\n", a, b, add(a, b));
printf("\n2. Pass-by-Reference Swap:\n");
printf(" Before swap: a = %d, b = %d\n", a, b);
swap(&a, &b);
printf(" After swap: a = %d, b = %d\n", a, b);
printf("\n3. Recursive Factorials:\n");
for (unsigned int i = 0; i <= 6; i++) {
printf(" %u! = %llu\n", i, factorial(i));
}
return EXIT_SUCCESS;
}
int add(int x, int y) {
return x + y;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// Recursive factorial with base case
unsigned long long factorial(unsigned int n) {
if (n <= 1) {
return 1; // Base case
}
return (unsigned long long)n * factorial(n - 1); // Recursive step
}Ouvrir dans le compilateurRésultat attendu
1. Sum function: 15 + 30 = 45 2. Pass-by-Reference Swap: Before swap: a = 15, b = 30 After swap: a = 30, b = 15 3. Recursive Factorials: 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 5! = 120 6! = 720
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.