Study/JS Algorithm Rocket

[JS] 재귀함수 알고리즘 (스택프레임)

이안92 2021. 11. 8. 23:04
반응형

 

 재귀함수(Recursion)

 

자기자신을 호출하는 것을 재귀함수라 하는데, 반복문과 동일하지만 조합할 때 사용할 수있다.

return하면 반환한다는 의미도 있지만 함수에서는 종료를 의미하기도 한다.

function solution(n){
  function DFS(Level){
    if(Level==0) return;
    else{
      console.log(Level); // 3 2 1
      DFS(Level-1);
      console.log(Level); // 1 2 3
    }
  }
  DFS(n)
}

solution(3);

 

console을 찍었을 때 왜 반대로 찍힐까?

재귀함수 이후에 찍은 console은 stack에 쌓여있다가 복귀(pop)를해서 가장 늦게 들어온 메서드부터 console을 출력한다.

Stack 자료구조와 같이 FILO(First In Last Out)으로 출력되며 메서드들을 프레임이라 부른다.

프레임에는 매개변수, 지역변수, 변환주소들의 정보가 포함되어 있다.

반응형