수를 입력받아 홀수인지 여부를 리턴해야 합니다.
let output = isOdd(17);
console.log(output); // --> true
output = isOdd(-8);
console.log(output); // --> false
function isOdd(num) {
if (num === 0){
return false;
}else if (num === 1){
return true;
}
if(num<0){
return isOdd(-num)
}
return isOdd(num-2)
// TODO: 여기에 코드를 작성합니다.
}
수를 입력받아 n-factorial(n!; 엔-팩토리얼) 값을 리턴해야 합니다.
n! 은 1부터 n까지 1씩 증가한 모든 값의 곱입니다.
let output = factorial(10);
console.log(output); // --> 3628800
function factorial(num) {
if(num <= 1) {
return 1;
}
return num*factorial(num-1);
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
}
주의사항
함수 factorial은 재귀함수의 형태로 작성합니다.
반복문(for, while) 사용은 금지됩니다.
factorial(0)은 1로 정의됩니다.
음수 입력은 들어오지 않습니다.
풀이
0, 1 이 들어올 경우 1로 정의 한다.
num=3
numfactorial(num-1); 이것의 리턴 값은,
factorial(3) = 3factorial(2);
factorial(2) = 2*factorial(1);
factorial(1) = 1
factorial(2) = 2
factorial(3) = 6
수(num)를 입력받아 피보나치 수열의 num번째 요소를 리턴해야 합니다.
let output = fibonacci(5);
console.log(output); // --> 5
output = fibonacci(9);
console.log(output); // --> 34
주의사항
함수 fibonacci는 재귀함수의 형태로 작성합니다.
반복문(for, while) 사용은 금지됩니다.
피보나치 수열은 0번부터 시작합니다.
코드
function fibonacci(num) {
if (num <= 1){
return num;
}
return fibonacci(num-1)+fibonacci(num-2);
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
}
러시아 전통인형 마트료시카에 대한 정보를 담은 객체와 수를 입력받아 조건에 맞는 인형이 있는지 여부를 리턴해야 합니다.
const matryoshka = {
size: 10,
matryoshka: {
size: 9,
matryoshka: null,
},
};
let output = findMatryoshka(matryoshka, 10);
console.log(output); // --> true
output = findMatryoshka(matryoshka, 8);
console.log(output); // --> false
주의사항
함수 findMatryoshka는 재귀함수의 형태로 작성합니다.
반복문(for, while) 사용은 금지됩니다.
입력받은 객체는 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability).
빈 객체를 입력받은 경우, false를 리턴해야 합니다.
코드
function findMatryoshka(matryoshka, size) {
if(matryoshka.size === size){
return true;
}else if(matryoshka.matryoshka === null){
return false;
}
if(matryoshka.size > size){
return findMatryoshka(matryoshka.matryoshka, size)
}else {
return false;
}
// TODO: 여기에 코드를 작성합니다.
}
선물 상자에 대한 정보를 담은 배열과 문자열을 입력받아 조건에 맞는 선물이 있는지 여부를 리턴해야 합니다.
const giftBox = ['macbook', 'mugcup', ['eyephone', 'postcard'], 'money'];
let output = unpackGiftbox(giftBox, 'iphone');
console.log(output); // --> false
output = unpackGiftbox(giftBox, 'postcard');
console.log(output); // --> true
주의사항
함수 unpackGiftbox는 재귀함수의 형태로 작성합니다.
반복문(for, while) 사용이 가능합니다.
입력받은 배열은 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability).
빈 배열 또는 빈 문자열을 입력받은 경우, false를 리턴해야 합니다.
코드
function unpackGiftbox(giftBox, wish) {
if(giftBox.length === 0 || wish === ''){
return false;
}
for(let i=0; i<giftBox.length; i++){
if(giftBox[i] === wish){
return true;
}else if(Array.isArray(giftBox[i])){
const result = unpackGiftbox(giftBox[i], wish)
if(result === true){
return true;
}
}
}
return false;
// TODO: 여기에 코드를 작성합니다.
}