-
순수 재귀함수 (Pure Recursion)개발 여정/JavaScript 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 연산자 이용
'개발 여정 > JavaScript' 카테고리의 다른 글
[JavaScript] 실행 컨텍스트로 살펴보는 호이스팅 (0) 2022.11.04 [JavaScript] 참조형(Reference) 데이터의 할당 구조, 깊은복사/얕은복사 (0) 2022.10.22 [JavaScript] 기본형 데이터 할당 시 메모리 구조 (0) 2022.10.20 [Javascript] 호이스팅이란? (Hoisting) (0) 2022.10.06 [수업노트] fetch (0) 2022.03.20