Я довольно смущен приведенным ниже кодом.
как переменные хранятся и обрабатываются в функции рекурсии в python?
def a(x):
print(x)
if x > 0:
a(x - 1)
print(x) #I am confused with this print statement
a(5)
Вышеприведенный код выход:
5
4
3
2
1
0
0
1
2
3
4
5
Up до 0
Я понимаю, как он печатает, но тогда почему он печатает в порядке возрастания.
Переменная x
меняется так, что я думал, что выход будет Последнее присвоенное значение x, то есть 0
.
Мои предсказали выход:
5
4
3
2
1
0
0
0
0
0
0
0
Так как же это трек значение х ...?
Может кто-то объяснить вкратце, что на самом деле происходит в рекурсивных функций и как переменные, хранящиеся в нем.
Никакая переменная 'x' не изменяется: каждый вызов функции имеет свой собственный' x'. –
Это не имеет ничего общего с рекурсивной функцией. Вызов функции с помощью 'x - 1' не изменяет значение' x' в текущей области. Вы можете найти http://pythontutor.com/ полезным. – jonrsharpe
Похоже, вы должны немного прочитать о стеке, например здесь: https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/stack.html - это то, как функции хранят свои локальные переменные , возвращаемые значения и т. д. –