Я все еще пытаюсь понять рекурсию и то, что я ожидал, что код будет напечатан и что на самом деле напечатано.Почему эта рекурсивная функция не печатается дважды?
так вот код, который только на основе от простого примера, который я нашел на YouTube,
def count(n):
if n > 0:
print "Count 1", ", ", n
count(n - 1)
print "Count 2", ", ", n
else:
print "Done"
count(1)
и это то, что он печатает,
граф 1, 1
Done
Кол-во 2, 1
Что я ожидал, было
граф 1, 1
Совершено
Совершено
Мое понимание (что, конечно, не так), что граф (1) (для внешнего счетчика функции) будет называться и потому что 1 больше 0, будет печатать 1, затем подсчет (1 - 1) (функция внутреннего счета) вызовет счетчик (0) (функция внешнего счета), а так как 0 не больше 1, это напечатает Done. Затем я подумал, что возврат из счета (1 - 1) (функция внутреннего счета) также будет возвращен Done, и поскольку не было других n значений, введенных во внутренний счет(), это было бы так. Я не понимаю, как сделали отпечатки один раз и 1 печатает дважды ???
Рекурсивный вызов не изменяет значения локальных переменных в текущем вызове. Поэтому ваше понимание неверно (также потому, что функция ничего не возвращает, поэтому ваш разговор о «return Done» не имеет большого смысла). – vanza
вы можете использовать встроенный отладчик и пройти через строку кода по строке 'import pdb; pdb.set_trace(); ' – dm03514