Edizione didattica italiana
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 compilatoreRisultato 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.