37일차 - 재귀함수

김민찬·2021년 6월 15일
0

취업으로의 여정

목록 보기
38/196

재귀함수는 처음 이해하기가 어려운 주제 중 하나가 아닌가 싶다.

재귀함수를 다룰려면 머리속에서 재귀함수를 어느정도는 돌릴 수 있는 능력이 필요한 것 같다. 그래야지 재귀함수를 쓰기 위해서 문제를 나누는 과정을 진행해서 세분화 시켜야지 비로서 재귀함수를 쓸 수 있기 때문이다.
다행히도, 이 파트에 대해서 이해가 타 사람들에 비해서 빠르게 된 편이라고 생각한다.

내가 재귀함수를 이해한 방법은 허물을 하나씩 벗는 뱀을 생각했다.

하나의 허물이 나오면 다시 뱀 그 자체로 재귀되고 또 허물을 하나를 벗는 것이다.
적고보니, 이게 더 이해가 어려울 사람도 많을 거 같긴 한데, 아무튼 내가 이해할 수 있었던 방식이다.

재귀함수를 가장 잘 나타내는 문제는 '팩토리얼'이다.

팩토리얼 문제를 보겠다.

문제 : n 번째의 팩토리얼 값을 구하시오.

이렇게 있으면 우선 예외를 생각해 봐야된다.
만약 0이들어오면 0!은 1이다.
그리고 가장 작은 단위를 생각해야된다.
가장 작은 단위는 1일 때 이다.
이것이 재귀의 탈출 조건이 되는 것이다.

그러면

if(n <= 1){
  return 1;
}

라고 써볼 수 있다. 그리고, 나머지 조건은 위에서 언급했 듯이 하나씩 허물을 벗기면서 재귀하면서 곱하면 된다.
위의 가장 작은 단위와 합해본다면

function fac(n) {
  if(n === 1){
    return 1;
  }
  return n*fac(n-1);
}

이렇게 되는 것이다.

profile
두려움 없이

0개의 댓글