Conceptos básicos de recursión
Parte de la sección Fundamentos del Journey de C de Coddy. Lección 50 de 63.
La recursión es una técnica en la que una función se llama a sí misma para resolver un problema. Es como resolver un problema grande dividiéndolo en problemas más pequeños y similares.
Veamos una función recursiva sencilla que calcula el factorial:
int factorial(int n) {
// Caso base: el factorial de 0 o 1 es 1
if (n <= 1) {
return 1;
}
// Caso recursivo: n! = n * (n-1)!
return n * factorial(n - 1);
}Toda función recursiva necesita:
- Un caso base para detener la recursión
- Un caso recursivo que avance hacia el caso base
Por ejemplo, al calcular factorial(3):
- factorial(3) llama a factorial(2)
- factorial(2) llama a factorial(1)
- factorial(1) devuelve 1 (caso base)
- factorial(2) devuelve 2 * 1 = 2
- factorial(3) devuelve 3 * 2 = 6
Desafío
FácilCrea una función llamada sumToN que use la recursión para calcular la suma de los números del 1 a n.
Por ejemplo:
- sumToN(3) debería devolver 6 (1 + 2 + 3)
- sumToN(5) debería devolver 15 (1 + 2 + 3 + 4 + 5)
Tu función debería:
- Usar un caso base cuando n sea 1 (devolver 1)
- De lo contrario, devolver n más la suma de los números del 1 a (n-1)
Pruébalo tú mismo
#include <stdio.h>
// Escribe tu función sumToN aquí
// No cambies la función main()
int main() {
int n;
scanf("%d", &n);
printf("%d", sumToN(n));
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Control de flujo
Sentencia ifIf - ElseElse-IfCaso switchOperador condicional ternarioDesafío de repasoIf - Else anidado7Funciones
Declarar una funciónTipos de retornoParámetrosDesafío de repaso n.º 1Conceptos básicos de recursiónPrototipos de funcionesDesafío de repaso n.º 22Variables
Tipos de datosEnteroFloat - DoubleCaracteresBooleanosConstantesConceptos básicos de printfReglas para nombrar variablesConversión de tipos, parte 1Conversión de tipos, parte 2Desafío de repaso3Operadores
Operadores aritméticosOperador móduloIncremento/DecrementoOperadores de asignaciónOperadores relacionalesOperadores lógicos Parte 1Operadores lógicos Parte 2Operadores lógicos Parte 3Desafío de repasoPractica por tu cuenta: Compilador de C online