Materias · 🏛️ Universidad y trabajo
Recursión
Ejercicios resueltos de Recursión paso a paso, con el error que más se comete en cada uno: Caso base y caso recursivo, Rastrear una llamada recursiva y más. Gratis y en español.
Preguntarle al tutor de RecursiónSin instalar nada. Puedes probar antes de crear cuenta.
Ejercicios resueltos de Recursión
Resueltos paso a paso, como te los explicaría el tutor, y con el error que más se comete.
Caso base y caso recursivo
Torres de Hanói: hay que pasar 4 discos de la varilla A a la C usando la B, moviendo un disco a la vez y sin poner nunca un disco grande sobre uno más pequeño. ¿Cuántos movimientos mínimos hacen falta y de dónde sale ese número?
Cómo se resuelve
- 1La clave es no pensar en los 4 discos a la vez, sino en el más grande. Para que el disco 4 pueda pasar de A a C, la varilla C tiene que estar vacía y los otros 3 discos tienen que estar todos apilados en B. No hay otra manera.
- 2Eso parte el problema en tres partes: mover 3 discos de A a B, mover el disco grande de A a C (un solo movimiento) y mover esos 3 discos de B a C.
- 3«Mover 3 discos» es el mismo problema, más pequeño: ahí está la recursión. La relación queda T(n) = 2·T(n − 1) + 1.
- 4El caso base es T(1) = 1: un solo disco se mueve directo. Sin ese caso base la definición se llamaría a sí misma para siempre.
- 5Se sube desde el caso base: T(2) = 2 × 1 + 1 = 3. T(3) = 2 × 3 + 1 = 7. T(4) = 2 × 7 + 1 = 15.
- 6El patrón cerrado es T(n) = 2ⁿ − 1, y para n = 4 da 2⁴ − 1 = 15. También explica por qué esta recursión cuesta O(2ⁿ): con 20 discos ya son 1.048.575 movimientos.
Respuesta: 15 movimientos. Salen de T(n) = 2·T(n − 1) + 1 con T(1) = 1, que se cierra en T(n) = 2ⁿ − 1.
El error de siempre: Suponer que con 4 discos son el doble que con 3, o sea 14. Es el doble MÁS UNO: los 3 discos de arriba se mueven dos veces (para quitarlos de encima y para volverlos a poner sobre el grande) y el disco grande se mueve una sola vez. Ese «+1» es exactamente lo que hace que la fórmula sea 2ⁿ − 1 y no 2ⁿ.
Rastrear una llamada recursiva
El algoritmo de Euclides se define así: mcd(a, b) = mcd(b, a mod b), con caso base mcd(a, 0) = a. Rastrea las llamadas para mcd(1071, 462).
Cómo se resuelve
- 1Antes de rastrear, por qué funciona: cualquier número que divida a la vez a y b divide también el residuo a mod b, así que el máximo común divisor no cambia al reemplazar el par (a, b) por (b, a mod b).
- 2Y por qué termina: el residuo siempre es menor que b, así que el segundo argumento se achica en cada llamada y el caso base b = 0 se alcanza seguro.
- 3Llamada 1: mcd(1071, 462). 1071 = 2 × 462 + 147, el residuo es 147. Se llama a mcd(462, 147).
- 4Llamada 2: mcd(462, 147). 462 = 3 × 147 + 21, el residuo es 21. Se llama a mcd(147, 21).
- 5Llamada 3: mcd(147, 21). 147 = 7 × 21 + 0, el residuo es 0. Se llama a mcd(21, 0).
- 6Llamada 4: b = 0, es el caso base, y devuelve 21. Ese 21 sube tal cual por las tres llamadas que estaban esperando, porque ninguna le hace nada al resultado antes de devolverlo.
- 7Comprobación: 1071 ÷ 21 = 51 y 462 ÷ 21 = 22, y 51 y 22 ya no tienen divisores comunes.
Respuesta: mcd(1071, 462) = 21, alcanzado en 4 llamadas.
El error de siempre: Escribir la llamada con los argumentos al revés, mcd(a mod b, b). Así el segundo argumento nunca se achica, el caso base no llega y el programa se cae con desbordamiento de pila. La comprobación que hay que hacer al escribir cualquier recursión son dos preguntas: ¿existe un caso base?, ¿y cada llamada acerca de verdad a él?
¿Y si tu ejercicio no es ninguno de estos?
No hace falta buscar el ejercicio exacto en internet. Trae el tuyo, o pide los que te falten.
Todo esto es gratis y sin instalar nada. Puedes probar antes de crear cuenta.
Lo que cubre
- Caso base y caso recursivo
- Rastrear una llamada recursiva
Preguntas que le puedes hacer
- Caso base y caso recu…Explícame «Caso base y caso recursivo» con un ejemplo práctico y dime en qué suele equivocarse la gente.
- Rastrear una llamada …Explícame «Rastrear una llamada recursiva» con un ejemplo práctico y dime en qué suele equivocarse la gente.
Cómo enseña este tutor
Es riguroso y completo: justifica cada paso y nombra el teorema, la norma o la buena práctica que está aplicando, para que puedas citarla en tu trabajo o en el parcial.
- · Te muestra el camino completo, no solo el resultado.
- · Si algo no te cuadra, te lo explica otra vez de otra manera.
- · Con una foto de tu cuaderno te dice dónde está el error.
- · Te arma quizzes de lo que acabas de ver para saber si de verdad quedó.
Otras materias de Universidad y trabajo