코플릿/재귀 15

03_factorial

문제 수를 입력받아 n-factorial(n!; 엔-팩토리얼) 값을 리턴해야 합니다. n! 은 1부터 n까지 1씩 증가한 모든 값의 곱입니다. 입력 let output = factorial(10); console.log(output); // --> 3628800 더보기 function factorial(num) { // TODO: 여기에 코드를 작성합니다. // 별도의 최적화 기법(memoization)은 금지됩니다. if(num === 0){ return 1 } else if(num === 1){ return num } return num * factorial(num-1) }

코플릿/재귀 2021.11.04

04_fibonacci

문제 수(num)를 입력받아 피보나치 수열의 num번째 요소를 리턴해야 합니다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 입력 let output = fibonacci(5); console.log(output); // --> 5 output = fibonacci(9); console.log(output); // --> 34 더보기 function fibonacci(num) { if (num

코플릿/재귀 2021.11.04

08_drop

문제 수(num)와 배열을 입력받아 차례대로 num개의 요소가 제거된 새로운 배열을 리턴해야 합니다. 입력 let output = drop(2, [1, -2, 1, 3]); console.log(output); // --> [1, 3] output = drop(5, [1, -2, 1, 3]); console.log(output); // --> [ ] function drop(num, arr) { // TODO: 여기에 코드를 작성합니다. // num이 arr.length보다 길면 빈배열 리턴 // 그렇지 않으면 재귀함수로 num-1씩 배열은 첫번째 값을 빼고 나머지 값을 배열로 넣어준다. if(num === 0){ return arr } if(num > arr.length){ return [] } ret..

코플릿/재귀 2021.10.31

09_take

문제 수(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,-..

코플릿/재귀 2021.10.31

11_or

문제 배열을 입력받아 모든 요소의 논리합(or)을 리턴해야 합니다. 입력 let output = or([true, true, false]); console.log(output); // --> true output = or([false, false, false]); console.log(output); // --> false function or(arr) { // TODO: 여기에 코드를 작성합니다. let result = false; if(arr.length === 0){ return false } if(arr[arr.length-1]){ result= true; } if(arr.length ===1){ return result; } return or(arr.slice(0, arr.length-1)) }..

코플릿/재귀 2021.10.31