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

재귀 함수로 숫자에서 가장 큰 자릿수 찾기 - JavaScript


이번 글에서는 숫자를 인자로 받아 그 숫자 안에서 가장 큰 자릿수를 반환하는 재귀(recursion) 기반의 JavaScript 함수를 작성해 보겠습니다.

예를 들어, 입력값이 다음과 같다면 −

45654356

각 자릿수(4, 5, 6, 5, 4, 3, 5, 6) 중 가장 큰 값은 6이므로, 함수는 6을 반환해야 합니다.

접근 방식

재귀로 이 문제를 해결하는 핵심 아이디어는 다음과 같습니다.

  • 숫자를 10으로 나눈 나머지(% 10)를 이용해 마지막 자릿수를 구합니다.
  • 현재 자릿수와 지금까지 찾은 최대값(greatest)을 비교하여 더 큰 값을 유지합니다.
  • 숫자를 10으로 나눈 몫(Math.floor(num / 10))으로 재귀 호출을 반복합니다.
  • 숫자가 0이 되면 재귀를 종료하고 누적된 최대값을 반환합니다.

예제 코드

다음은 전체 코드입니다 −

const num = 45654356;
const greatestDigit = (num = 0, greatest = 0) => {
   if(num){
      const max = Math.max(num % 10, greatest);
      return greatestDigit(Math.floor(num / 10), max);
   };
   return greatest;
};
console.log(greatestDigit(num));

코드 설명

  • 기본 매개변수: numgreatest의 기본값이 모두 0으로 설정되어 있어, 인자 없이 호출해도 안전하게 동작합니다.
  • 재귀 단계: Math.max(num % 10, greatest)로 현재 자릿수와 기존 최대값 중 더 큰 것을 선택한 뒤, 남은 숫자로 함수를 다시 호출합니다.
  • 종료 조건: num이 0이 되면 if문이 실행되지 않고 greatest를 그대로 반환하며 재귀가 마무리됩니다.

출력

콘솔에 출력되는 결과는 다음과 같습니다 −

6