ho visto le altre domande sul SO sulla funzione ricorsiva e ho letto le risposte, ma non riesco ancora a ottenere l'algoritmo di cliccare nella mia testaTorre di Hanoi - JavaScript - le parti buone
var hanoi = function (disc, src, aux, dst) {
if (disc > 0) {
hanoi(disc - 1, src, dst, aux);
document.write('Move disc ' + disc + ' from ' + src + ' to ' + dst);
hanoi(disc - 1, aux, src, dst);
}
}
hanoi(3, 'Src', 'Aux', 'Dst');
Come funziona document.write (...), mai eseguito. La mia logica è la prima volta che eseguiamo il disco della funzione è> 3. quindi chiamiamo ricorsivamente la funzione saltando di nuovo tutto quanto segue, in che modo document.write può funzionare?
Capisco la ricorsione (fatto gli esempi di base) ma non riesco ancora a vedere come si ottiene un risultato. Se c'è un modo in cui posso eseguirlo visivamente e vederlo in azione, ciò aiuterebbe molto.
+1 stavo per scrivere la stessa cosa, ma la tua è più leggibile. La chiave, penso, è di pensare a ogni 'hanoi()' non come a 'GOTO' ma piuttosto come una subroutine del precedente' hanoi() '. In questo senso, ha 'disc' andare a 0, ma ha ancora tre' hano's aperti, e continuerebbero a funzionare. "Annie se ne andrà dopo la partenza di Bob, che parte dopo che Cindy se ne va, che lascia dopo Doug lascia" o qualcosa del genere. – brymck