JavaScript | 재귀(Recursion) 함수

설탕·2022년 2월 4일
0

재귀(Recursion) 함수

재귀(recursion)란, 자신을 정의할 때 자기 자신을 호출하는 방법이다.

const countdown = n => {
  console.log(n);
  countdown(n-1);
}

countdown(10);

countdown 함수는 받은 인자를 console로 출력한다. 그런데 위의 함수를 실행하면 10에서 시작해서 무한으로 마이너스 값까지 내려간다.

그래서 재귀함수는 '언제 멈출 것인가?'를 조건으로 주어야 한다.

다음은 0이 되면 더이상 재귀를 이어나가지 않도록 종료 조건을 추가한 것이다.

const countdown = n => {
  console.log(n);

  if (n === 0) return;

  countdown(n-1);
}

countdown(10);

팩토리얼(factorial)을 구하는 함수

재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현할 수 있다. 팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한 것을 말한다.

const factorial = n => {
  return n < 1 ? 1 : n * factorial(n-1);
}

console.log(factorial(5)); // 120

factorial 함수에 5를 인자로 넣으면 5*4*3*2*1을 계산해 120을 리턴한다.
factorial 함수는 다음과 같은 순서로 작동한다.

  • n=5일 때 return값: 5 * factorial(4)
  • n=4일 때 return값: 4 * factorial(3)
  • n=3일 때 return값: 3 * factorial(2)
  • n=2일 때 return값: 2 * factorial(1)
  • n=1일 때 return값: 1 * factorial(0)
  • n=0일 때 return값: 1

따라서 최종적으로 factorial 함수는 5 * 4 * 3 * 2 * 1 * 1을 실행하고 120을 리턴하게 된다.

profile
공부 기록

0개의 댓글