[javascript] 재귀 함수와 스택

재귀 함수와 스택은 자바스크립트에서 중요한 개념이다. 재귀 함수는 함수가 자기 자신을 호출하는 것을 의미하며, 스택은 함수 호출을 관리하는 메모리 구조이다.

재귀 함수 (Recursive Function)

재귀 함수는 자기 자신을 호출하는 함수를 말한다. 이는 함수가 반복되는 동작을 간단하게 만들어 줄 수 있다. 예를 들어, 팩토리얼 함수를 재귀 함수로 구현할 수 있다.

function factorial(num) {
    if (num === 0) {
        return 1;
    } else {
        return num * factorial(num - 1);
    }
}

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

이 예제에서 factorial 함수는 자기 자신을 호출하여 팩토리얼을 계산한다. 호출 스택에는 각 호출의 상태가 저장되는데, 이때 호출된 함수는 나중에 반환될 값이 저장된 후 스택에서 제거된다.

스택 (Stack)

자바스크립트는 함수 호출을 관리하기 위해 호출 스택(call stack)을 사용한다. 함수가 호출되면 해당 함수의 상태는 스택의 맨 위에 추가되고, 함수가 반환되면 해당 상태는 스택에서 제거된다. 이러한 프로세스는 재귀 함수 호출에도 적용된다.

예를 들어, factorial(5)를 호출하면 다음과 같은 스택이 형성된다.

factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
factorial(0)

스택이 최대 깊이에 도달하면 Maximum call stack size exceeded와 같은 에러가 발생할 수 있으므로 주의해야 한다.

결론

재귀 함수와 스택은 자바스크립트에서 중요한 개념으로, 재귀 함수를 사용할 때는 호출 스택을 고려하여 스택 오버플로우 에러가 발생하지 않도록 주의해야 한다.

JavaScript와 스택에 관한 더 많은 정보 재귀 함수에 대한 효율적인 사용 방법