재귀함수(recursive function)

이동환·2020년 8월 20일
1

TIL

목록 보기
16/74

재귀함수

: 한 함수가 자기 자신을 함수 내부에서 실행시켜 원하는 값을 얻을때 까지 반복하는 함수. 반복문을 사용하지않고, 코드를 간결하게 작성할 수 있다는 장점을 가지고 있다. 그러나 이때 주의 사항은 항상 먼저 탈출 할 수 있는 base case를 먼저 작성하고, 나머지를 작성해야 무한 루프에 빠지는것을 방지 할 수 있다.
(글로 쉽게 설명되지만, 코드로 작성 할 때, 너무 어렵다 ^^)

재귀함수는 아래와 같은 상황에서 사용하면 효율적으로 코드를 작성할 수 있다.

  • 주어진 문제가 (구조는 비슷하고) 더 작은 문제로 나뉘어 질 수 있는 경우
  • 중첩된 루프가 많거나 중첩의 정도(number of loops)를 미리 알 수 없는 경우

간단한 예로 팩토리얼을 들 수 있다.
(팩토리얼이란, 5! 같이 적을 수 있다. 그리고 수학시간에 배웠듯이 이건 5x 4 x 3 x 2 x 1 을 뜻한다.)

이 팩토리얼을 코드로 작성해보면,

function factorial(num) {
if(num ===0){ // num이라는 숫자가 0이되면 멈추겠다는 base case다.
  return 1;   여기 리턴값은 아래 마지막 함수를 실행했을때, 곱해지는 값 또는 함수에 따라 더해지는값이 될 수 있다.
}
  return num * factorial(num-1);
}
profile
UX를 개선하는것을 즐기고 새로운것을 배우는것을 좋아하는 개발자입니다.

0개의 댓글