• 문제 1. 다음 power라는 함수를 사용해서 Math.pow()를 표현해라. 단, 밑값과 지수값이 음수가 되지 않도록 코드를 써라.
function power(n, m) {
  //Math.pow() 제곱한값
  //basecase
  if (m === 0) {
    return 1;
  }
  return n * power(n, m - 1);
  //2*power(2, 3)
  //2*2*power(2, 2)
  //2*2*2power(2, 1)
  //2*2*2*2power(2, 0)
  //2*2*2*2*1
}

power(2, 4); //16
  • 문제 2. 다음 factorial함수를 사용해서 factorial를 표현해라. 단 0!은 항상 1이다.
function factorial(n) {
  //basecase
  if (n === 0) return 1;
  return n * factorial(n - 1);
}
  • 문제 3. 다음 productOfArray함수를 사용해서 숫자 배열을 받아 모두의 곱을 반환하는 함수를 작성하세요.
function productOfArray(arr) {
  //base case
  if (arr.length === 0) {
    return 1;
  }
  return arr[0] * productOfArray(arr.slice(1));
}

productOfArray([1,2,3]) // 6
productOfArray([1,2,3,10]) // 60
  • 문제 4. 다음 recursiveRange함수를 이용하여, 인자로 들어가는 숫자까지의 합을 구하는 함수를 작성하세요.
function recursiveRange(num) {
  //base case
  if (num === 1) return 1;
  return num + recursiveRange(num - 1);
}

recursiveRange(6) // 21
recursiveRange(10) // 55
  • 문제 5. fib함수를 이용하여, 피보나치 수열에서 n번째 숫자를 반환하는 함수를 작성하세요.
    피보나치 수열은 1과 1로 시작하는 정수 1, 1, 2, 3, 5, 8, ...의 수열이며 이후의 모든 수는 이전 두 수의 합과 같습니다.
function fib(num) {
  //base case
  //num=2 1,1
  //num=1 1
  if (num <= 2) return 1;
  return fib(num - 2) + fib(num - 1);
}

fib(4) // 3 
fib(10) // 55
fib(28) // 317811
fib(35) // 9227465
  • 문제 6. reverse함수를 이용하여, 문자열을 거꾸로 해서 새 문자열을 반환하는 재귀함수를 작성하세요.
function reverse(str) {
  //base case
  if (str.length === 1) return str;
  
  //retrun reverse(str.slice(1)) 
  // emosewa mosewa osewa sewa ewa wa a
  return reverse(str.slice(1)) + str[0];
}

reverse("awesome") // 'emosewa'
reverse("rithmschool") // 'loohcsmhtir'
profile
함께 일하는 프론트엔드 개발자 이성은입니다🐥

0개의 댓글