자바스크립트 - 재귀 함수란? 사용하는 이유, 주의 사항

반응형

재귀 함수(recurtion) 란?

자기 자신을 호출하는 함수를 재귀 함수라고 합니다.

 

factorial 함수 예시

facotrial 함수는 특정 숫자를 넣으면 그 값이 0이 되기 전까지 계속 곱셈을 하는 함수 입니다.

반복문

function factorial(num){
    let total = 1;
    for(let i = num; i > 1; i--){
        total *= i
    }
    return total;
}

재귀 함수

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

 

재귀 함수를 사용하는 이유

자바스크립트에서 JSON.parse, JSON.stringfy 함수, 또는 getElementById 함수 등은 재귀 함수로 이루어져 있습니다.

 

위와 같이 간단한 함수의 경우 반복문과 재귀 함수 등을 이용해서 동일한 기능을 구현할 수 있습니다만,

 

때때로 객체를 순회하거나, 트리 데이터를 순회 할때는

재귀 함수를 사용하는 것이 더욱 깔끔하고 직관적으로 구현할 수 있습니다.

 

예시

function parseObject(jsonString) {
    if (jsonString[0] === '{') {
        return parseObject(jsonString.slice(1, -1)); 
    } else if (jsonString[0] === '[') {
        return parseArray(jsonString.slice(1, -1));
    } else {
        return jsonString;
    }
}

주의 사항

 

적절한 종료 조건이 없거나, return 문이 없다면 위에 같이 오류가 발생합니다.

 

사용할 수 있는 최대 호출 스택을 초과하였다는 오류 입니다.

이 오류가 발생한다면, 종료 조건이 올바른지, return 을 하는지를 확인해야 합니다.

728x90
반응형