Respuestas modelo
Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.
4.04 · Recursión
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Qué es la recursión?
- A. Un bucle
- B. Una función que se llama a sí misma ✓ CORRECTA
- C. Un tipo de variable
- D. Un error
Recursión: función que se llama a sí misma con un caso base que termina la cadena.
¿Cuáles son los 2 elementos esenciales de una función recursiva?
- A. Variables y parámetros
- B. Caso base y caso recursivo ✓ CORRECTA
- C. Return y print
- D. Loop y condición
Caso base: condición de terminación. Caso recursivo: llamada a sí misma con un subproblema más pequeño.
¿Cuándo puede causar stack overflow la recursión?
- A. Nunca
- B. Si la profundidad es excesiva y no hay caso base alcanzable ✓ CORRECTA
- C. Solo en C++
- D. Solo en Python
Cada llamada usa espacio en la pila de llamadas. Si la recursión es muy profunda, se desborda el stack.
📝 Test · Sección A · Opción múltiple (10)
¿Qué es la recursión?
- A. Un bucle
- B. Función que se llama a sí misma ✓ CORRECTA
- C. Una variable
- D. Un compilador
Recursión: función que se llama a sí misma con un caso más simple.
Los 2 elementos esenciales de recursión:
- A. Variables y retorno
- B. Caso base y caso recursivo ✓ CORRECTA
- C. Loop y condición
- D. Print y scan
Caso base: condición de terminación. Caso recursivo: llamada con subproblema más pequeño.
¿Qué pasa sin caso base?
- A. Error de compilación
- B. Recursión infinita y stack overflow ✓ CORRECTA
- C. Loop normal
- D. No compila
Sin caso base, la recursión nunca termina y desborda la pila.
¿Cuándo es útil la recursión?
- A. Siempre
- B. Problemas con estructura repetitiva: árboles, factorial, fibonacci, divide y vencerás ✓ CORRECTA
- C. Solo en C++
- D. Solo con strings
Recursión es natural para problemas con subproblemas similares: árboles, factorial, backtracking.
Factorial recursivo: ¿cuál es el caso base?
- A. 0
- B. 0 o 1: factorial(0) = 1, factorial(1) = 1 ✓ CORRECTA
- C. 2
- D. 10
Caso base: factorial(0) = 1, factorial(1) = 1. Caso recursivo: n * factorial(n-1).
Fibonacci recursivo sin memoization es:
- A. O(n)
- B. O(2^n) - exponencial ✓ CORRECTA
- C. O(log n)
- D. O(n²)
Sin memo, fib(n) llama a fib(n-1) y fib(n-2), árbol exponencial. Con memo: O(n).
La pila de llamadas (call stack) almacena:
- A. Variables globales
- B. Información de cada llamada: parámetros, variables locales, retorno ✓ CORRECTA
- C. Archivos
- D. Comentarios
Stack: cada llamada apila un "stack frame" con sus datos.
Recursión vs iteración: ¿cuál usa más memoria?
- A. Iteración
- B. Recursión (cada llamada usa stack) ✓ CORRECTA
- C. Igual
- D. Ninguna
Recursión: O(profundidad) de stack. Iteración: O(1) de stack.
¿Qué es tail recursion?
- A. Recursión al final
- B. La llamada recursiva es la última operación de la función ✓ CORRECTA
- C. Recursión infinita
- D. Recursión condicional
Tail recursion: la llamada recursiva es lo último. El compilador puede optimizarla a loop.
¿Para problemas con backtracking es útil la recursión?
- A. No
- B. Sí, es la herramienta natural ✓ CORRECTA
- C. Solo con arrays
- D. Solo en Java
Backtracking: probar, recursar, deshacer. Natural con recursión. Ej: N-reinas, laberintos.
✍️ Test · Sección B · Preguntas abiertas (3)
Explica la recursión con un ejemplo diferente al factorial (puedes usar sumatoria, fibonacci, etc.).
Sumatoria: sum(n) = n + sum(n-1), caso base sum(0) = 0. Cada llamada reduce el problema en 1. Pila: sum(3) → sum(2) → sum(1) → sum(0) → 0 → 1 → 3 → 6.
¿Qué es backtracking? Da un ejemplo de problema que se resuelva con backtracking recursivo.
Backtracking: probar opciones, recursar, deshacer si no funciona. Problema N-reinas: colocar N reinas en tablero NxN sin que se ataquen. Algoritmo: intentar columna por columna en cada fila, recursar, si choca con otra reina, backtrack.
¿Cuándo es mejor iteración que recursión? Da 2 casos.
Cuando el problema es naturalmente iterativo (sumar un array). Cuando la profundidad de recursión es muy grande (riesgo de stack overflow). Cuando la memoria es limitada (recursión usa stack).
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.