Online C Compiler
Apri nel compilatore

Edizione didattica italiana

Esempi di funzioni e ricorsione in C

Collega prototipi, passaggio per valore e modifica degli oggetti tramite puntatori.

Apri nel compilatore

Esempi di funzioni e ricorsione in C
Collega prototipi, passaggio per valore e modifica degli oggetti tramite puntatori.

Un prototipo stabilisce tipo restituito e parametri; la definizione deve corrispondere. Gli argomenti vengono copiati: cambiare un parametro ordinario non cambia la variabile del chiamante.

Per scambiare valori del chiamante passa i loro indirizzi e scrivi attraverso i puntatori. Talvolta si parla di passaggio per riferimento, ma C trasmette sempre il valore del puntatore.

Per la ricorsione definisci prima il caso base e assicurati che ogni chiamata riduca il problema. Prova input piccoli e considera lo spazio dello stack.

Codice sorgente

#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
}
Apri nel compilatore

Risultato atteso

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

Domande frequenti

Perché il codice e alcuni risultati restano in inglese?

Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.