개발 여정/JavaScript
순수 재귀함수 (Pure Recursion)
calm-lee
2022. 10. 22. 10:59
순수 재귀
- 필요한 모든 코드가 함수 자체에 포함되며 재귀적
- helper 메소드 재귀와 같이 외부 데이터를 사용하지 않음
function collectOddValues(arr){
let newArr = []; // newArr가 리셋되면서 빈 배열이 됨
if(arr.length === 0){
return newArr;
} // 종료점 : arr의 길이가 0이 될 때
if(arr[0] % 2 !== 0){
newArr.push(arr[0]);
} // arr의 첫 번째 값이 홀수일 경우 newArr 배열의 첫째 자리에 넣음
newArr = newArr.concat(collectOddValues(arr.slice(1))); // arr.slice(1)으로 첫번째 값을 제외한 배열을 재귀로 돌리고, concat으로 홀수 배열인 newArr와 붙임
return newArr;
}
배열을 사용하고 helper 메소드 없이 순수 재귀 솔루션을 작성하는 경우
- 배열을 복사하는 slice, spread 연산자, concat을 사용하면 배열을 변경할 필요가 없음
- String은 불변값이므로 위의 방법들을 통해서 사본을 만들어야 함
- 객체의 사본을 만들 경우, Object.assign 혹은 spread 연산자 이용