숫자를 인자로 받아 해당 숫자에서 가장 큰 자릿수를 반환하는 JavaScript 재귀 함수를 작성해야 합니다.
예를 들어, 입력된 숫자가 45654356이라면 각 자릿수는 4, 5, 6, 5, 4, 3, 5, 6이며, 이 중 가장 큰 값인 6을 반환해야 합니다.
구현 방법
이 문제는 재귀 호출을 활용하면 간결하게 해결할 수 있습니다. 핵심 로직은 다음과 같습니다.
- 나머지 연산자(
%)를 사용해 숫자의 마지막 자릿수를 추출합니다. Math.max()로 현재까지의 최댓값과 비교합니다.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));실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
6
코드 설명
함수 greatestDigit은 두 개의 매개변수를 가집니다. 첫 번째는 처리할 숫자 num, 두 번째는 지금까지 발견한 최대 자릿수 greatest입니다. 기본값을 각각 0으로 설정했기 때문에 초기 호출 시 최댓값 없이도 실행할 수 있습니다.
숫자가 0보다 큰 동안에는 마지막 자릿수(num % 10)와 현재 최댓값을 비교하여 더 큰 값을 다음 재귀 호출에 전달하고, 모든 자릿수를 확인한 후에는 최종 최댓값을 반환합니다. 이 방식은 반복문 없이도 깔끔하게 문제를 해결할 수 있다는 점이 장점입니다.