La recursividad es un concepto importante en programación donde una función se llama a sí misma para resolver un problema más pequeño. Vamos a explorar cómo implementar funciones recursivas en C y algunos ejemplos para comprender su uso.
Funciones Recursivas: Conceptos Básicos
En una función recursiva, la función se invoca a sí misma con un problema más pequeño y se reduce gradualmente hasta alcanzar un caso base que se resuelve directamente.
#include <stdio.h>
void funcionRecursiva(int n) {
// Caso base
if (n == 0) {
return;
}
printf("%d ", n);
// Llamada recursiva con un problema más pequeño
funcionRecursiva(n - 1);
}
int main() {
int numero = 5;
printf("Llamada recursiva: ");
funcionRecursiva(numero);
return 0;
}
En el ejemplo anterior, la función `funcionRecursiva` imprime los números desde `numero` hasta 1.
Casos Base en Funciones Recursivas
Cada función recursiva debe tener uno o más casos base para evitar que la recursión se vuelva infinita. Un caso base es una condición que indica cuándo detener la recursión.
#include <stdio.h>
void contarHasta(int n) {
if (n == 0) {
return; // Caso base: detiene la recursión
}
contarHasta(n - 1);
printf("%d ", n);
}
int main() {
int numero = 5;
printf("Conteo: ");
contarHasta(numero);
return 0;
}
Factorial Recursivo
El cálculo del factorial es un ejemplo clásico de recursividad.
#include <stdio.h>
int factorial(int n) {
// Caso base
if (n == 0 || n == 1) {
return 1;
}
// Llamada recursiva
return n * factorial(n - 1);
}
int main() {
int numero = 5;
printf("Factorial de %d: %d\n", numero, factorial(numero));
return 0;
}
Fibonacci Recursivo
El cálculo de la secuencia de Fibonacci también es un ejemplo típico de recursividad.
#include <stdio.h>
int fibonacci(int n) {
// Caso base
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
// Llamada recursiva
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int numero = 6;
printf("Fibonacci de %d: %d\n", numero, fibonacci(numero));
return 0;
}
Estos ejemplos te brindan una idea de cómo implementar funciones recursivas en C. Es importante entender cómo funcionan los casos base y cómo la recursión se reduce hacia ellos.