: 재귀 함수란 자기 자신을 호출하는 함수입니다. 재귀 함수를 적용한 코드가 일반적인 반복문으로 이루어진 코드보다 더 간결하고 이해하기 쉽습니다.
function recursive(input1, input2, ...) {
// base case : 문제를 더 이상 쪼갤 수 없는 경우
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive case : 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
}
장점
현재 상태를 저장해야 할 경우 tmp 변수를 만들지 않고, 현재 상태를 메소드를 통해 재귀적으로 호출하면서 변경된 상태를 전달함으로 tmp 변수를 정의하지 않아도 됩니다.
상황에 따라 반복문이 여러번 중첩되어야 하는 경우, 코드의 가독성을 떨어뜨리고 얼마나 반복되는지 예측하기 힘들게 됩니다. 이 경우에 재귀함수를 사용함으로써 가독성을 높이고 비교적 예측하기 쉽게 만들어줍니다.
단점
지속적으로 함수를 호출하게 되면서 함수 내에서 정의된 로컬변수, 파라미터, 리턴값 모두 Call stack에 저장해야합니다. 이런 과정은 선언한 변수의 값만 사용하는 반복문보다 메모리를 더 많이 사용하게 되고 메모리가 스택의 공간을 넘어가게 되면 Stack overflow 문제가 발생하게 됩니다.