재귀 함수(recursive function)

건둔덕 ·2022년 7월 16일
1

Javascript

목록 보기
20/28
post-thumbnail

아래 내용은 나무위키에서 재귀 함수를 정의한 내용이다.

재귀 함수는 정의 단계에서 자신을 재참조하는 함수를 뜻한다.
어떤 사건이 자기 자신을 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다.

재귀함수의 경우에는 보통 반복되는 처리를 위해 사용한다. 예를 들어서 10부터 0까지의 숫자를 구하는 재귀 함수를 표현한다면 아래의 예시처럼 만들어 볼 수 있다.

function countdown(n) {
    if (n < 0) return;
    console.log(n);
    countdown(n - 1); // 재귀 호출
}

countdown(10);

위의 예시처럼 간단하게 10부터 0까지 숫자가 작아지는 형태의 재귀 함수를 만들어 볼 수 있다.

팩토리얼(계승) 또한 재귀 함수로 간단히 만들어 볼 수 있다.

function factorial(n) {
	// 탈출 조건: n이 1보다 작거나 같을 때 재귀 호출을 멈춘다.
  	if (n <= 1) return 1;
  	
  	// 재귀 호출
  	return n * factorial(n - 1);
}

console.log(factorial(5)); // 5 * 4 * 3 * 2 * 1 = 120

이처럼 재귀 함수는 반복되는 처리를 위해 사용되는데 무한히 호출 되는 함수이다 보니 재귀 함수 내에는 재귀 호출을 멈출 수 있는 탈출 조건이 반드시 필요하다.

위의 팩토리얼 재귀 함수의 경우에는 인수의 값이 1이하 일 때 재귀 호출을 멈춘다. 탈출 조건을 넣지 않으면 함수가 무한히 호출되어 스택 오버플로 에러가 발생하니 주의하도록 하자.

profile
건데브

0개의 댓글