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

자바스크립트(JS)에서 재귀 함수를 활용해 배열 요소 개수 구하기

재귀 함수(Recursive Function)란 자기 자신을 다시 호출하는 함수를 말하며, 반드시 종료 조건(base condition)이 필요합니다. 이번 글에서는 재귀 함수를 사용하여 자바스크립트 배열의 요소 개수를 구하는 방법을 알아보겠습니다.

예제 데이터 준비

먼저 학생들의 점수가 담긴 다음과 같은 배열이 있다고 가정해 보겠습니다.

var listOfMarks = [56, 78, 90, 94, 91, 82, 77];

재귀 함수로 배열 요소 개수 세기

재귀 함수의 핵심 로직은 간단합니다. 배열의 길이가 0이면 0을 반환하고(종료 조건), 그렇지 않으면 1을 더한 뒤 첫 번째 요소를 제외한 나머지 배열(slice(1))에 대해 자기 자신을 다시 호출합니다.

코드 예제

function countNumberOfElementsUsingRecursive(listOfMarks) {
    // 종료 조건: 배열이 비어 있으면 0 반환
    if (listOfMarks.length == 0) {
        return 0;
    }
    // 현재 요소 1개 + 나머지 배열에 대한 재귀 호출 결과
    return 1 +
    countNumberOfElementsUsingRecursive(listOfMarks.slice(1));
}
var listOfMarks = [56, 78, 90, 94, 91, 82, 77];
console.log("배열 =");
console.log(listOfMarks);
var numberOfElements = countNumberOfElementsUsingRecursive(listOfMarks);
console.log("배열 요소 개수 = " + numberOfElements);

프로그램 실행 방법

위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력하면 됩니다.

node fileName.js

여기서는 파일 이름이 demo110.js라고 가정합니다.

실행 결과

프로그램을 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.

PS C:\Users\Amit\JavaScript-code> node demo110.js
배열=[
    56, 78, 90, 94,
    91, 82, 77
]
배열 요소 개수 = 7

동작 원리 정리

이 코드의 실행 흐름을 단계별로 살펴보면 다음과 같습니다.

1. [56, 78, 90, 94, 91, 82, 77] 배열이 함수에 전달되면 길이가 0이 아니므로 1을 더하고, 첫 번째 요소를 제외한 [78, 90, 94, 91, 82, 77]로 재귀 호출합니다.
2. 이 과정은 배열이 빈 배열 []이 될 때까지 반복됩니다.
3. 빈 배열이 전달되면 종료 조건에 의해 0을 반환하고, 호출된 순서의 역순으로 1씩 더해져 최종적으로 7이라는 결과가 반환됩니다.

이처럼 재귀 함수는 문제를 작은 단위로 쪼개어 해결하는 방식이며, 배열 순회나 깊은 데이터 구조 탐색 등 다양한 상황에서 유용하게 활용할 수 있습니다.