Udemy - 재귀 예제


1️⃣  Power

첫번째 인풋의 두번째 인풋 제곱값을 구하는 재귀함수 알고리즘을 작성 🙂

1
2
3
4
5
6
7
8
function power(a, b) {
// b가 1보다 작으면 1을 반환하는 endpoint를 설정
if (b < 1) {
return 1;
}
// 아래와 같은 재귀 함수가 반복되며 b가 0에 닿을 때 까지 a*(b-1)이 쌓인다.
return a * power(a, b - 1);
}

2️⃣  팩토리얼

말 그대로 팩토리얼(내림차순 곱)을 구현하는 재귀함수 알고리즘을 작성하면 된다.

1
2
3
4
5
6
7
8
function factorial(num) {
// endpoint가 0이면 안되는 이유는, n*0 = 항상 0이 되기 때문이다.
if (num < 1) {
return 1;
}
// 재귀함수 호출
return num * factorial(num - 1);
}

3️⃣  배열의 모든 수 곱하기

주어진 배열의 모든 요소들을 곱한 값을 반환하는 재귀함수 알고리즘을 작성하시오

1
2
3
4
5
6
7
8
function productOfArray(arr) {
// arr의 길이는 매 재귀호출마다 slice에 의해 1씩 줄어든다.
// 따라서 arr의 길이가 0에 닿았을 때 곱셈에 영향을 주지 않는 1을 return한다. (그냥 return만 해도 됨)
if (arr.length < 1) {
return 1;
}
return arr[0] * productOfArray(arr.slice(1));
}

4️⃣  1씩 증가하는 등차수열의 합

0~N까지의 합을 계산하여 반환하는 재귀함수 알고리즘을 작성하시오

1
2
3
4
5
6
7
8
9
function recursiveRange(num) {
// 이 문제는 합을 구하는 문제이기 때문에, 덧셈에 영향을 주지 않는 0을 return하는 것이 안전하다.
if (num < 1) {
return 0;
}
// 꼭 증가하는 등차수열이라고 해서 값을 더해 나갈 필요는 없다.
// N~0까지의 합을 구해도 됨
return num + recursiveRange(num - 1);
}

5️⃣  피보나치 수열의 index 찾기

피보나치 예시

입력 받은 숫자가 피보나치 수열 내에서 몇번 째의 숫자인지 반환하는 재귀함수 알고리즘을 작성하시오

1
2
3
4
5
6
function fib(num) {
if (num <= 2) {
return 1;
}
return fib(num - 1) + fib(num - 2);
}

Author

Hoonjoo

Posted on

2022-01-10

Updated on

2022-02-07

Licensed under

Comments