Online C Compiler
Ouvrir dans le compilateur

É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.

Ouvrir dans le compilateur

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 compilateur

Ré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.