Если вы хорошо разбираетесь в стеке, тогда вы поймете, как работает память в программе, и если вы поймете, как работает память в программе, вы поймете, как хранятся функции в программе, и если вы поймете, как хранятся функции в программе, вы поймете, как работает рекурсивная функция, и если вы понимаете, как работает рекурсивная функция, вы поймете, как работает компилятор, и если вы поймете, как работает компилятор, ваш ум будет работать как компилятор, и вы очень легко отладите любую программу
Позвольте мне объяснить, как работает стек:
Сначала вы должны знать, как функции представлены в стеке:
Куча хранит динамически назначаемые значения.
Стек хранит значения автоматического выделения и удаления.
Давайте разберемся на примере:
def hello(x):
if x==1:
return "op"
else:
u=1
e=12
s=hello(x-1)
e+=1
print(s)
print(x)
u+=1
return e
hello(4)
Теперь разберитесь в частях этой программы:
Теперь посмотрим, что такое стек и что такое части стека:
Размещение стека:
Помните одну вещь: если условие возврата какой-либо функции будет выполнено, независимо от того, загрузили оно локальные переменные или нет, оно немедленно вернется из стека с его фреймом стека. Это означает, что всякий раз, когда какая-либо рекурсивная функция удовлетворяет базовое условие, и мы помещаем возврат после базового условия, базовое условие не будет ждать загрузки локальных переменных, которые находятся в части «else» программы. Он немедленно вернет текущий кадр из стека, после чего следующий кадр теперь находится в записи активации.
Посмотрите это на практике:
Выделение блока:
Итак, теперь всякий раз, когда функция встречает оператор return, она удаляет текущий кадр из стека.
При возврате из стека значения будут возвращены в обратном порядке, в котором они были размещены в стеке.
person
Aaditya Ura
schedule
18.10.2016