■ 프로그래밍/JavaScript

재귀(Recursion)

hi_mj 2020. 4. 25. 11:52

재귀(Recursion)

재귀란 함수가 자기 자신을 호출하는 것이다. 

 

const countdown = n => {
  console.log(n);
  if (n === 0) return; // n이 0이라면 함수 종료
  countdown(n-1);      // n-1을 계속 실행
}

countdown(10);

// output: 
// 10
// 9
// 8
// 7
// 6
// 5
// 4
// 3
// 2
// 1

함수 안에 또 자기 자신을 호출해서 n값에서 -1된 값을 계속 return하고 있다. 

여기서 가장 중요한 것은 종료 조건이 있다는 것이다. 

if ( 조건 ) { return }

만약 종료 조건이 없다면, 재귀는 계속 해당 함수를 호출하여 컴퓨터가 과부하게 걸리거나 원치않은 값까지 return 할 수 있다. 

 

예제

재귀는 팩토리얼(factorial)을 구할 때 사용할 수 있다.

팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말한다. 

 2! = 1 * 2

 5! = 1 * 2 * 3 * 4 * 5

 

만약 5!를 구하고 싶다면 아래와 같이 작성하면 된다.

const factorial = n => {
  console.log(n)
  if ( n === 0 ) {
    return 1
  } else {
    return n * factorial(n-1)
  }
}

factorial(5);