01_sumTo 문제 수(num)를 입력받아 1부터 num까지의 합을 리턴해야 합니다. 입력 let output = sumTo(10); console.log(output); // --> 55 더보기 function sumTo(num) { // TODO: 여기에 코드를 작성합니다. // 별도의 최적화 기법(memoization)은 금지됩니다. if(num === 0){ return num } return num + sumTo(num - 1) } 코플릿/재귀 2021.11.04
02_isOdd 문제 수를 입력받아 홀수인지 여부를 리턴해야 합니다. 입력 let output = isOdd(17); console.log(output); // --> true output = isOdd(-8); console.log(output); // --> false 더보기 function isOdd(num) { // TODO: 여기에 코드를 작성합니다. if(num 코플릿/재귀 2021.11.04
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
05_arrSum 문제 배열을 입력받아 모든 요소의 합을 리턴해야 합니다. 입력 let output = arrSum([-1, -2, 1, 3]); console.log(output); // --> 1 더보기 function arrSum(arr) { // TODO: 여기에 코드를 작성합니다. // if(arr.length ===0){ return 0 } return arr[0] + arrSum(arr.slice(1, arr.length)) } 코플릿/재귀 2021.11.04
06_arrProduct 문제 배열을 입력받아 모든 요소의 곱을 리턴해야 합니다. 입력 let output = arrProduct([1, -2, 1, 3]); console.log(output); // --> -6 더보기 function arrProduct(arr) { // TODO: 여기에 코드를 작성합니다. if(arr.length === 0){ return 1 } return arr[0] * arrProduct(arr.slice(1, arr.length)) } 코플릿/재귀 2021.11.04
07_arrLength 더보기 function arrLength(arr) { // TODO: 여기에 코드를 작성합니다. // if(arr.isEmpty()){ return 0 } return 1 + arrLength(arr.slice(1)) } 코플릿/재귀 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