Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 재귀 함수를 활용해 숫자의 각 자릿수 합을 구하는 방법

C#에서 숫자의 각 자릿수 합을 구할 때 재귀(Recursion) 기법을 활용하면 코드가 매우 간결해집니다. 재귀란 메서드가 자기 자신을 다시 호출하는 방식으로, 자릿수를 하나씩 분리하면서 반복적으로 더하는 작업에 적합합니다.

재귀 메서드 설계

먼저 자릿수의 합을 계산하는 재귀 메서드를 정의합니다. 입력받은 숫자가 0이 아니면 마지막 자릿수(n % 10)를 더하고, 나머지 부분(n / 10)으로 자기 자신을 다시 호출합니다.

static int sum(int n) {
    if (n != 0) {
        return (n % 10 + sum(n / 10));
    } else {
        return 0;
    }
}

동작 원리

위 메서드는 입력된 숫자가 0이 될 때까지 재귀 호출을 반복합니다. 핵심 로직은 다음 한 줄입니다.

return (n % 10 + sum(n / 10));
  • n % 10: 현재 숫자의 마지막 자릿수를 추출합니다.
  • n / 10: 마지막 자릿수를 제거한 나머지 값을 만들어 다음 재귀 호출에 전달합니다.
  • 숫자가 0이 되면 재귀가 종료되며, 호출된 역순으로 각 자릿수가 차례대로 더해져 최종 합계가 반환됩니다.

예를 들어 22를 입력하면 2 + 2 = 4가 되고, 123을 입력하면 1 + 2 + 3 = 6이 됩니다.

전체 예제 코드

using System;
class Demo {
    public static void Main(string[] args) {
        int n, result;
        n = 22;
        Console.WriteLine("Number = {0}", n);
        result = sum(n);
        Console.WriteLine("Sum of digits = {0}", result);
    }
    static int sum(int n) {
        if (n != 0) {
            return (n % 10 + sum(n / 10));
        } else {
            return 0;
        }
    }
}

실행 결과

Number = 22
Sum of digits = 4

정리

재귀를 이용한 자릿수 합 계산은 반복문 없이도 문제를 우아하게 해결할 수 있는 대표적인 예제입니다. 다만 매우 큰 숫자나 깊은 재귀 호출이 필요한 경우에는 스택 오버플로우(Stack Overflow)를 고려해야 하므로, 실무에서는 상황에 따라 반복문 방식과 비교하여 선택하는 것이 좋습니다.