Как работает многократное использование рекурсии в функции?

#python #recursion

#python #рекурсия

Вопрос:

Например: проблема Ханоя связана с использованием нескольких рекурсивных вызовов — ‘hanoi(n-1, s, b, t) и hanoi(n-1, b, t, s). Однако я не уверен, в каком порядке выполняется код.

Может ли кто-нибудь разбить этот код для меня шаг за шагом?

 def hanoi(n, s, t, b):
    assert n > 0
    if n ==1:
        print 'move ', s, ' to ', t
    else:
        hanoi(n-1,s,b,t)
        hanoi(1,s,t,b)
        hanoi(n-1,b,t,s)
  

Комментарии:

1. сначала он выполнит первый рекурсивный вызов… до тех пор, пока не будет напечатано перемещение… затем он выполнит второй рекурсивный вызов (вплоть до печати), а затем выполнит последний вызов… весь путь вниз

2. так будет ли он печатать s в b, затем печатать s в t, а затем печатать b в t на основе исходной функции?

3. если n равно 2, я думаю, это правильно…