728x90
문제
수(num)와 배열을 입력받아 차례대로 num개의 요소만 포함된 새로운 배열을 리턴해야 합니다.
입력
let output = take(2, [1, -2, 1, 3]);
console.log(output); // --> [1, -2]
output = take(5, [1, -2, 1, 3]);
console.log(output); // --> [1, -2, 1, 3]
function take(num, arr) {
// TODO: 여기에 코드를 작성합니다.
if(num === 0){
return []
}
if(num > arr.length){
return arr
}
return arr.slice(0,1).concat(take(num-1, arr.slice(1)))
// num =4, arr = [-1,-2,1,2,3,4,5]
// num === 4 arr.slice(0,1) =[-1] take(num-1, arr.slice(1)) === take(3, [-2, 1, 2, 3, 4, 5])
// num === 3 arr.slice(0,1) =[-2] take(num-1, arr.slice(1)) === take(2, [1, 2, 3, 4, 5])
// num === 2 arr.slice(0,1) =[1] take(num-1, arr.slice(1)) === take(1, [2, 3, 4, 5])
// num === 1 arr.slice(0,1) =[2] take(num-1, arr.slice(1)) === take(0, [3, 4, 5])
// num === 0 []
// arr.slice를 다 더해줍니다.
}
function take(num, arr) {
// if (num >= arr.length) {
// return arr;
// }
if (num === 0 || arr.length === 0) {
return [];
}
// const [head, ...tail] = arr;
const head = arr[0];
const tail = arr.slice(1);
return [head].concat(take(num - 1, tail));
}
728x90
'코플릿 > 재귀' 카테고리의 다른 글
07_arrLength (0) | 2021.11.04 |
---|---|
08_drop (0) | 2021.10.31 |
11_or (0) | 2021.10.31 |
12_reverseArr (0) | 2021.10.31 |
13_findMatryoshka (0) | 2021.10.31 |