Ханойская функция Крокфорда (из «Хороших частей») [дубликат]

На этот вопрос уже есть ответ:

Как работает рекурсивный алгоритм для Ханойских Башен? 3 ответа

В данный момент я читаю книгу Дугласа Крокфорда, и Ханойские башни стоят над моей головой. Даже при входе в консоль я не мог по-настоящему понять, что происходит. Вот функция с моими дополнениями:

var hanoi = function (disc, src, aux, dst) {
  console.log(disc);
  console.log(src, dst);    
  if (disc > 0) {
    hanoi(disc - 1, src, dst, aux);
    console.log('Move disc ' + disc + ' from ' + src + ' to ' + dst);
    hanoi(disc - 1, aux, src, dst);
  }
}

hanoi(3, 'Src', 'Aux', 'Dst');

Это приводит к следующему:

3
Src Dst
2
Src Aux
1
Src Dst
0
Src Aux
Переместить диск 1 из Src в Dst
0
Aux Dst
Переместить диск 2 из Src в Aux
1
Dst Aux
0
Dst Src
Переместить диск 1 из Dst в Aux
0
Src Aux
Переместить диск 3 из Src в Dst
2
Aux Dst
1
Aux Src
0
Aux Dst
Переместить диск 1 из Aux в Src
0
Dst Src
Переместить диск 2 из Aux в Dst
1
Src Dst
0
Src Aux
Переместить диск 1 из Src в Dst
0
Aux Dst

И я заблудился в самом начале. В строке 6 результатов, как он может вернуться из Src Aux в Src Dst?

И как число дисков может снова увеличиться, когда оно достигнет 0, когда функция вызывает себя только с использованием «disc-1»?

Ответы на вопрос(2)

Ваш ответ на вопрос