- 문제 1. 다음 power라는 함수를 사용해서
Math.pow()
를 표현해라. 단, 밑값과 지수값이 음수가 되지 않도록 코드를 써라.
function power(n, m) {
if (m === 0) {
return 1;
}
return n * power(n, m - 1);
}
power(2, 4);
- 문제 2. 다음 factorial함수를 사용해서 factorial를 표현해라. 단 0!은 항상 1이다.
function factorial(n) {
if (n === 0) return 1;
return n * factorial(n - 1);
}
- 문제 3. 다음 productOfArray함수를 사용해서 숫자 배열을 받아 모두의 곱을 반환하는 함수를 작성하세요.
function productOfArray(arr) {
if (arr.length === 0) {
return 1;
}
return arr[0] * productOfArray(arr.slice(1));
}
productOfArray([1,2,3])
productOfArray([1,2,3,10])
- 문제 4. 다음 recursiveRange함수를 이용하여, 인자로 들어가는 숫자까지의 합을 구하는 함수를 작성하세요.
function recursiveRange(num) {
if (num === 1) return 1;
return num + recursiveRange(num - 1);
}
recursiveRange(6)
recursiveRange(10)
- 문제 5. fib함수를 이용하여, 피보나치 수열에서 n번째 숫자를 반환하는 함수를 작성하세요.
피보나치 수열은 1과 1로 시작하는 정수 1, 1, 2, 3, 5, 8, ...의 수열이며 이후의 모든 수는 이전 두 수의 합과 같습니다.
function fib(num) {
if (num <= 2) return 1;
return fib(num - 2) + fib(num - 1);
}
fib(4)
fib(10)
fib(28)
fib(35)
- 문제 6. reverse함수를 이용하여, 문자열을 거꾸로 해서 새 문자열을 반환하는 재귀함수를 작성하세요.
function reverse(str) {
if (str.length === 1) return str;
return reverse(str.slice(1)) + str[0];
}
reverse("awesome")
reverse("rithmschool")