🍋 Recursion - Examples
Example : countDown
Question
countDown(5);
/*
5
4
3
2
1
All done!
*/
Loop solution
function countDown(num) {
for (let i = num; i > 0; i--) {
console.log(i);
}
console.log("All done!");
}
Recursion solution
function countDown(num) {
if (num <= 0) {
console.log('All done!');
}
console.log(num);
num--;
countDown(num);
}
Mechanism

countDown 함수에서 num <= 0일 때 재귀 호출이 멈추기 때문에 베이스 케이스는 if (num <= 0)이다.
Example : sumRange
Question
sumRange(4); // 10
Solution
function sumRange(num) {
if (num === 1) return 1;
return num + sumRange(num - 1);
}
Mechanism

sumRange 함수에서 num === 1일 때 재귀 호출이 멈추기 때문에 베이스 케이스는 if (num === 1)이다.
sumRange(3)을 호출할 시 return 3 + 2 + 1이므로 6이 반환된다.
Example : factorial
Question
factorial(4); // 24
Loop solution
function factorial(num) {
let total = 1;
for (let i = num; i > 1; i--) {
total *= i;
}
return total;
}
Recursive solution
function factorial(num) {
if (num === 1) return 1;
return num * factorial(num - 1);
}
Mechanism

factorial 함수의 작동 원리는 sumRange와 동일하다. 덧셈 대신 곱셈을 해주고 있을 뿐...
JavaScript Algorithms and Data Structures Masterclass
'🍒 Knowledge > Algorithm' 카테고리의 다른 글
| 🍋 [Algorithm] Challenges - Recursion 1️⃣ (0) | 2023.05.17 |
|---|---|
| 🍋 [Algorithm] Recursion - Helper Method (0) | 2023.04.27 |
| 🍋 [Algorithm] Recursion (0) | 2023.04.18 |
| 🍋 [Algorithm] Challenges - Sliding Window (0) | 2023.04.12 |
| 🍋 [Algorithm] Challenges - Multiple Pointers (0) | 2023.04.12 |
