Clase 11: Recursión y Estructuras de Datos en C++ (OCI)¶
Recursión¶
La recursión ocurre cuando una función se llama a sí misma. Requiere una condición base que finalice la recursión, de lo contrario se produce un error de recursión infinita.
Ejemplo 1: Factorial¶
Ejemplo 2: Fibonacci¶
Ejemplo 3: Suma de lista¶
Recursión y memoria
La recursión es elegante, pero puede ser menos eficiente que un bucle en términos de memoria y tiempo. No es recomendable usar recursión si se pueden generar muchas funciones llamadas.
Estructuras de datos en C++¶
1. Arreglos Dinámicos (vector
)¶
Uso: Listas con acceso rápido por índice, inserción al final.
2. Cadenas (string
)¶
Uso: Manipulación de texto con funciones útiles.
3. Conjuntos¶
set
¶
Uso: Elementos únicos, ordenados.
unordered_set
¶
Uso: Elementos únicos, sin orden, búsquedas rápidas.
multiset
¶
Uso: Elementos duplicados permitidos.
4. Mapas¶
map
¶
Uso: Claves ordenadas.
unordered_map
¶
Uso: Claves sin orden, búsqueda rápida.
5. Bitset¶
Uso: Arreglo compacto de bits, ideal para conjuntos pequeños.
6. Deque¶
Uso: Acceso eficiente al frente y fondo.
7. Pila (stack
)¶
Uso: Último en entrar, primero en salir (LIFO).
8. Cola (queue
)¶
Uso: Primero en entrar, primero en salir (FIFO).
9. Cola de Prioridad¶
Uso: Recuperar y eliminar el mayor (por defecto) o menor.
Comparación de Usos¶
Necesidad | Estructura recomendada |
---|---|
Acceso por índice | vector |
Verificar pertenencia | unordered_set |
Elementos únicos ordenados | set |
Asociar claves a valores | map / unordered_map |
LIFO / FIFO | stack / queue |
Recuperar máximo/mínimo rápido | priority_queue |
Representar bits | bitset |
Acceso a ambos extremos | deque |