Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 재귀 루프로 역 카운트 출력하기

문제 정의

하나의 숫자를 입력받아 해당 숫자부터 0까지 카운트다운하면서 결과를 출력하는 재귀(Recursion) 기반 JavaScript 함수를 작성해야 합니다. 단, for나 while 같은 반복문은 사용할 수 없으며 오직 재귀 호출만으로 구현해야 한다는 조건이 있습니다.

재귀의 동작 원리

재귀 함수는 자기 자신을 다시 호출하는 구조로 동작합니다. 아래 코드에서는 카운터가 0보다 큰 동안 계속 자신보다 1 작은 값으로 함수를 호출합니다. 가장 마지막에 호출된 함수(counter가 0인 시점)부터 호출 스택이 하나씩 풀리면서 각 단계의 counter 값이 콘솔에 출력되기 때문에, 최종적으로는 0부터 입력값까지 순서대로 출력되는 역 카운트 효과를 얻을 수 있습니다.

예제 코드

구현 코드는 다음과 같습니다.

const recursiveLoop = (counter) => {
  // counter가 0보다 크면 먼저 더 작은 값으로 재귀 호출
  if (counter > 0) {
    recursiveLoop(counter - 1);
  }
  // 스택이 풀리면서 현재 counter 값을 출력
  console.log(counter);
  return counter;
};

recursiveLoop(5);
recursiveLoop(15);
recursiveLoop(25);

실행 결과

콘솔에는 아래와 같이 각 호출별로 0부터 해당 숫자까지 순서대로 출력됩니다.

// recursiveLoop(5)
0
1
2
3
4
5

// recursiveLoop(15)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

// recursiveLoop(25)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

정리

이처럼 재귀 호출을 활용하면 별도의 반복문 없이도 카운트 로직을 간결하게 구현할 수 있습니다. 다만 입력값이 매우 커지면 호출 스택이 깊어져 스택 오버플로(stack overflow)가 발생할 수 있으므로, 실무에서는 입력 범위를 고려해 사용하는 것이 좋습니다.