Função hanoi de Crockford (de “The Good Parts”) [duplicado]

Esta pergunta já tem uma resposta aqui:

Como o algoritmo recursivo funciona nas Torres de Hanói? 3 respostas

No momento, estou lendo o livro de Douglas Crockford, e as torres de hanoi estão um pouco acima da minha cabeça. Mesmo com o registro de coisas no console, eu não era capaz de realmente entender o que está acontecendo. Aqui está a função com minhas adições:

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');

Isso resulta no seguinte:

3
Src Dst
2
Src Aux
1
Src Dst
0
Src Aux
Mova o disco 1 de Src para Dst
0
Aux Dst
Mova o disco 2 de Src para Aux
1
Dst Aux
0
Dst Src
Mova o disco 1 de Dst para Aux
0
Src Aux
Mova o disco 3 de Src para Dst
2
Aux Dst
1
Aux Src
0
Aux Dst
Mova o disco 1 de Aux para Src
0
Dst Src
Mova o disco 2 de Aux para Dst
1
Src Dst
0
Src Aux
Mova o disco 1 de Src para Dst
0
Aux Dst

E eu estou perdido desde o início. Na linha 6 dos resultados, como ele pode voltar do Src Aux para o Src Ds

E como o número de discos pode subir novamente depois de atingir 0, quando a função está se chamando apenas usando "disc-1"

questionAnswers(2)

yourAnswerToTheQuestion