Saltar al contenido

Proyecto: torres de Hanói

JavaScript · Unidad 11: Recursión

En las torres de Hanói hay tres torres y una pila de discos, del más grande abajo al más chico arriba. Hay que pasarla de la torre A a la C, moviendo un disco a la vez y sin poner nunca uno grande sobre uno chico.

El truco es recursivo: para mover n discos, mueves los n - 1 de arriba a la torre que sobra, mueves el disco grande a su lugar y vuelves a poner los n - 1 encima. Con 0 discos, no hay nada que hacer.

function hanoi(n, de, a, otra) {
  if (n === 0) {
    return;
  }
  hanoi(n - 1, de, otra, a);
  console.log(`De ${de} a ${a}`);
  hanoi(n - 1, otra, a, de);
}
hanoi(3, "A", "C", "B");

Imprime

De A a C
De A a B
De C a B
De A a C
De B a A
De B a C
De A a C

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Opción múltiple

    Para mover una torre de 4 discos, ¿cuántas veces tienes que mover la torre de 3 discos que va arriba del grande?

  2. 2. Completa el código

    Completa hanoi para que imprima los 3 movimientos de una torre de 2 discos.

  3. 3. Escribe el código

    Escribe movimientos(n), que regrese cuántos movimientos hacen falta para mover una torre de n discos. Usa recursión: con 0 discos son 0 movimientos, y con n discos son los de mover dos veces la torre de n - 1, más uno.

  4. 4. Escribe el código

    Ahora escribe movCiclo(n) con un ciclo, sin recursión: empieza en 0 movimientos y, por cada disco, la cuenta pasa a ser el doble más uno.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →