반응형
재귀 함수(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
반응형