재귀를 사용한 자릿수 합 계산

CBeginner
지금 연습하기

소개

재귀 (Recursion) 는 함수가 자기 자신을 호출하는 프로그래밍 기법으로, 기본 사례 (base case) 가 충족되고 함수가 최종 출력을 반환할 때까지 함수가 반복되도록 합니다. 이 랩에서는 재귀를 사용하여 주어진 숫자의 자릿수 합을 구하는 방법을 배웁니다.

참고: 코딩을 연습하고 gcc 를 사용하여 컴파일하고 실행하는 방법을 배우려면 직접 ~/project/main.c 파일을 생성해야 합니다.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

사용자 입력 받기

첫 번째 단계는 사용자 입력을 받는 것입니다. 이는 자릿수 합을 구하려는 숫자입니다. 이를 위해 scanf 함수를 사용하여 표준 입력 (standard input, stdin) 스트림에서 사용자 입력을 읽습니다.

#include<stdio.h>

int main()
{
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);

    /* Add Code */

    return 0;
}

재귀 함수 정의하기

다음으로, 주어진 숫자의 자릿수 합을 구하는 재귀 함수를 작성합니다. 이 함수는 정수를 매개변수로 받아 자릿수의 합으로 정수를 반환합니다. 이 함수는 다음 단계를 수행합니다.

  1. 숫자가 10 보다 작으면, 함수는 숫자 자체를 자릿수의 합으로 반환합니다.
  2. 숫자가 10 이상이면, 함수는 마지막 자릿수의 합을 계산하고 나머지 자릿수를 인수로 사용하여 자신을 호출합니다.
int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

재귀 함수 호출하기

이제 이전 단계에서 정의한 재귀 함수를 1 단계에서 얻은 사용자 입력을 사용하여 호출합니다. 이 함수는 숫자의 자릿수 합을 정수로 반환합니다.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Enter a number: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    /* Add Code */

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

결과 표시하기

마지막 단계는 1 단계에서 얻은 숫자의 자릿수 합을 표시하는 것입니다. printf 함수를 사용하여 결과를 표준 출력 (stdout) 스트림에 표시합니다.

#include<stdio.h>

int sumOfDigits(int num);

int main()
{
    int num, sum;
    printf("Enter a number: ");
    scanf("%d", &num);

    sum = sumOfDigits(num);

    printf("Sum of digits of %d is: %d", num, sum);

    return 0;
}

int sumOfDigits(int num)
{
    if(num < 10)
    {
        return num;
    }
    else
    {
        return num%10 + sumOfDigits(num/10);
    }
}

요약

이 랩에서는 재귀를 사용하여 주어진 숫자의 자릿수 합을 구하는 방법을 배웠습니다. 먼저 사용자 입력을 얻고 자릿수 합을 계산하는 재귀 함수를 정의했습니다. 그런 다음 함수를 호출하고 사용자에게 결과를 표시했습니다.