스택 프레임(Stack Frame)

- 하나의 메소드에 필요한 메모리 덩어리

- 함수가 호출될때 스택에 매개 변수, 지역 변수, 복귀 주소가 스택에 저장된다.

- 백트래킹에 사용된다.

 

구성 요소

- 매개 변수

- 지역 변수

- 복귀 주소

 

스택 프레임 예제1 - 재귀함수를 이용해서 1~N까지의 수 더하기

public class Solution {
    public void DFS(int n){
        if(n==0) return;
        else {
            DFS(n-1);
            System.out.print(n+" ");
        }
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        T.DFS(3);
    }
}

- DFS(3) 이 main 함수에서 실행

- DFS함수에서 DFS(3)이 5번째 줄에서 DFS(2) -> DFS(1)으로 넘어간다.

- DFS(0)에서 return으로 함수를 탈출하면서

- 스택에 쌓여있던 DFS(3), DFS(2), DFS(1)이 위에부터 pop으로 제거된다.

 

출력

- 1 2 3

 

스택 프레임 예제2 - 재귀함수를 이용해서 10진수 -> 2진수

public class Solution {
    public void DFS(int n){
        if(n==0) return;
        else {
            // System.out.print(n%2); 1101으로 출력됨
            DFS(n/2); // 스택프레임으로 인해서 1011으로 출력됨
        }
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        T.DFS(11);
    }
}

+ Recent posts