슈피치 테크블로그
article thumbnail

🍋 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 작동 원리

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 작동 원리

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 작동 원리

factorial 함수의 작동 원리는 sumRange와 동일하다. 덧셈 대신 곱셈을 해주고 있을 뿐...

 


JavaScript Algorithms and Data Structures Masterclass
profile

슈피치 테크블로그

@슈피치

🐰 Happy new rabbit! 🐰

profile on loading

Loading...