Widziałem inne pytania dotyczące SO o funkcji rekurencyjnych i czytałem odpowiedzi, ale nadal nie można uzyskać algorytm kliknąć w głowieWieża Hanoi - JavaScript - The Good Parts
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');
W jaki sposób document.write (...), kiedykolwiek uruchomiono. My Logic Po raz pierwszy uruchamiamy dysk funkcji> 3. Następnie rekursywnie wywołujemy funkcję ponownie omijając wszystko poniżej, więc w jaki sposób document.write ma szansę uruchomić?
Rozumiem rekurencję (wykonałem podstawowe przykłady), ale nadal nie mogę zobaczyć, jak uzyskać dane wyjściowe. Jeśli istnieje sposób, w jaki mogę go uruchomić wizualnie i zobaczyć w akcji, to mogłoby pomóc.
+1 miałem napisać to samo, ale twój jest bardziej czytelny. Kluczem, jak sądzę, jest myślenie o każdym 'hanoi()' nie jako 'GOTO', ale raczej jako podprogram poprzedniej' hanoi() '. W tym sensie ma on 'disc' do 0, ale nadal ma trzy' hanoi's otwarte i nadal będą działać. "Annie odejdzie po tym, jak Bob odejdzie, a po Cindy odchodzi, a odchodzi, gdy Doug wychodzi". – brymck