스택을 잘 이해하면 프로그램에서 메모리가 작동하는 방식을 이해하고 프로그램에서 메모리가 작동하는 방식을 이해하면 프로그램에서 함수가 저장되는 방식을 이해하고 프로그램에서 함수가 저장되는 방식을 이해하면 재귀 함수가 작동하는 방식을 이해할 수 있습니다. 재귀 함수의 작동 방식을 이해하면 컴파일러의 작동 방식을 이해하고 컴파일러의 작동 방식을 이해하면 마음이 컴파일러로 작동하며 프로그램을 매우 쉽게 디버깅합니다.
스택 작동 방식을 설명하겠습니다.
먼저 함수가 어떻게 스택에 저장되는지 알아야합니다.
힙 저장소 동적 메모리 할당 값 스택 저장소 자동 할당 및 삭제 값
예를 들어 이해합시다.
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 문을 찾을 때마다 스택에서 현재 프레임을 삭제합니다.
스택 값에서 반환하는 동안 스택에 할당 된 순서의 역순으로 반환됩니다.
이것들은 매우 짧은 설명이며 스택 및 이중 재귀에 대해 더 깊이 알고 싶다면이 블로그의 두 게시물을 읽으십시오.
단계별 스택에 대한 추가 정보
스택과 함께 단계별 재귀에 대한 자세한 내용