재귀함수(recursion) 문제풀이 (1번~2번)

Hyodduru ·2022년 2월 15일
0

Algorithm

목록 보기
9/25
post-thumbnail

재귀함수

🙋‍ 재귀함수란?

자기 자신을 호출하는 함수를 말한다. 마치 반복문을 돌리듯 자기 자신을 끊임없이 부르다가 특정 조건이 되면 빠져나오는 함수. 스택(stack)이라는 자료구조를 쓴다.

1. 재귀함수와 스택프레임(중요)

자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하기.
1 2 3 순으로 출력이 되어야 한다.

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

⭐️ 중요포인트 ) 재귀함수가 작동하는 원리
스택에 아래에서 위로 DFS(3) - DFS(2) - DFS(1) 순서로 쌓인다. 이후 실행되지 못했던 재귀함수 내의 console.log(L) 코드가 위에서 아래로 실행이 된다. 그렇기에 1 2 3 순으로 출력이 되는 것! 그렇기에 실행하고 싶은 코드를 놓는 위치 유의할 것 ⭐️

2. 이진수 출력(재귀)

10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하기. 단 재귀함수를 이용 해서 출력해야 한다.

 function solution(n) {
     let answer = "";
     function DFS(n) {
       if (n === 0) return;
       DFS(parseInt(n / 2));
       answer +=n % 2;
     }

    DFS(n);

    return answer;
  }
console.log(solution(11)); //1011

느낀 점


스택 내에 함수가 쌓이고 해당 함수가 다 실행되기도 전에 재귀함수로 인해 다시 함수가 실행이 되는 구조를 잘 이해해보자⭐️

profile
꾸준히 성장하기🦋 https://hyodduru.tistory.com/ 로 블로그 옮겼습니다

0개의 댓글