Eso depende de cómo haya entendido el algoritmo. Básicamente, para codificarlo con recursión, debe pensar el algoritmo en términos de recursividad.
El enfoque debería ser este: para resolver N discos, supones que puedes resolverlo para discos N-1 usando un método abstracto (no conoces la implementación) y luego usando este método para resolverlo para N discos. La recursión termina con N = 1 donde simplemente transfiere el disco a la clavija deseada.
Algoritmo real:
Supongamos que A, B, C son tres clavijas. N discos deben transferirse de A a B y C es auxiliar.
- Tengo 23 años, gordo, asmático, con bajos ingresos, altas deudas, responsabilidad familiar, sin amigos. ¿Cómo puedo obtener lo mejor de mi vida?
- Noto que a muchas personas sin hogar les faltan dientes. ¿Sería malentendido o grosero si les consiguiera cepillos de dientes y los pegara como un gesto agradable?
- Mi cabeza está un poco hacia adelante, ¿qué puedo hacer?
- Dejando a un lado la opinión de mi pareja amorosa, ¿debería obtener una licencia de motocicleta a la edad de 30 años?
- Soy joven (adolescente), ambicioso y quiero tener éxito. ¿Cómo aprendo sobre negocios? ¿Qué debo hacer?
Solución recursiva:
Primero transfiera discos N-1 de A a C
Transfiera el 1 disco restante de A a B
Transfiera discos N-1 de C a B.
Pseudocódigo:
ToH (N, A, B, C):
Si N = 1:
Poner el disco superior 1 de A a B
Regreso
Otra cosa:
ToH (N-1, A, C, B)
ToH (1, A, B, C)
ToH (N-1, C, B, A)