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ón

Sin 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

  1. 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.
  2. 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. 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.
  4. 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.
  5. 5Se sube desde el caso base: T(2) = 2 × 1 + 1 = 3. T(3) = 2 × 3 + 1 = 7. T(4) = 2 × 7 + 1 = 15.
  6. 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

  1. 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).
  2. 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.
  3. 3Llamada 1: mcd(1071, 462). 1071 = 2 × 462 + 147, el residuo es 147. Se llama a mcd(462, 147).
  4. 4Llamada 2: mcd(462, 147). 462 = 3 × 147 + 21, el residuo es 21. Se llama a mcd(147, 21).
  5. 5Llamada 3: mcd(147, 21). 147 = 7 × 21 + 0, el residuo es 0. Se llama a mcd(21, 0).
  6. 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.
  7. 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