-
재귀함수 문제Topic/JavaScript 2021. 12. 18. 22:58반응형
재귀함수 사례
재귀함수 문제_1
function unpackGiftbox(giftBox, wish) { for (let i = 0; i < giftBox.length; i++) { if (giftBox[i] === wish) { return true } else if (Array.isArray(giftBox[i])) { let result = unpackGiftbox(giftBox[i], wish); if (result) return true; } } return false; }
주어진 선물박스와 위시가 일치하는지 확인하는 문제이다.
giftBox가 이렇게 주어지고
['macbook', ['eyephone', [], ['postcard']], 'iphone'];
wish로 'iphone'을 원한다면 ?
우선 giftBox가 배열이기 때문에 배열을 순회하면서 그 요소가 문자열이면 wish와 같은지 여부 확인,
배열이라면 그 안에서 재귀함수를 써서 다시 그 배열 안의 요소가 wish와 같은지 확인한다.여기서 중요한 점은 재귀함수를 쓸 때 그 자체를 리턴하는 것이 아니라
임의의 변수에 할당해서 그 값의 true or false여부를 판단하는 것이 중요하다.재귀함수 문제_2
function flattenArr(arr) { let newArr = [] for (let i = 0; i < arr.length; i++) { if (typeof arr[i] === 'number') { newArr.push(arr[i]) } else { let result = flattenArr(arr[i]) newArr.push(...result) } } return newArr }
arr.flat()을 쓰지 않고 배열을 평탄화?하는 과정을 구하는 문제이다.
다차원 배열을 입력받아 1차원 배열로 변환하여 리턴하는 것인데, 위의 문제와 같이 배열을 순회하면서 문자열인지, 배열인지
확인한 후에 재귀함수를 써서 그 배열을 다시 확인하는 과정이 중요했다.이번 문제 역시 재귀함수를 실행하는 과정에서 변수에 담아주고 그 결과를 push해주는 것이 포인트!
반응형'Topic > JavaScript' 카테고리의 다른 글
JSON 정리 (0) 2021.12.22 비동기, 고차함수, 콜백, (0) 2021.12.20 JSON (0) 2021.12.15 클래스를 이용한 모듈화, Prototype, 생성자 함수 (0) 2021.12.13 고차함수, map, filter, reduce (0) 2021.11.30