Edición didáctica en español. El código y sus salidas conservan el original.
Prototipos y recursión en C
Declara funciones antes de usarlas y comprende cómo modificar datos mediante punteros.

Un prototipo establece el tipo de retorno y los parámetros. La definición debe coincidir con él. Los argumentos se copian: modificar un parámetro ordinario no cambia la variable del llamador.
Para intercambiar dos valores del llamador, pasa sus direcciones y escribe mediante punteros válidos. La expresión «paso por referencia» suele describir esta técnica, pero el mecanismo del lenguaje sigue siendo paso por valor del puntero.
En recursión, define primero el caso base y comprueba que cada llamada reduzca el problema. Prueba entradas pequeñas y no olvides el coste de la pila.
Código C
#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
}Abrir en el compiladorSalida esperada
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
Preguntas frecuentes
¿Por qué el código y la salida siguen en inglés?
Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.