소개
재귀 (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;
}
재귀 함수 정의하기
다음으로, 주어진 숫자의 자릿수 합을 구하는 재귀 함수를 작성합니다. 이 함수는 정수를 매개변수로 받아 자릿수의 합으로 정수를 반환합니다. 이 함수는 다음 단계를 수행합니다.
- 숫자가 10 보다 작으면, 함수는 숫자 자체를 자릿수의 합으로 반환합니다.
- 숫자가 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);
}
}
요약
이 랩에서는 재귀를 사용하여 주어진 숫자의 자릿수 합을 구하는 방법을 배웠습니다. 먼저 사용자 입력을 얻고 자릿수 합을 계산하는 재귀 함수를 정의했습니다. 그런 다음 함수를 호출하고 사용자에게 결과를 표시했습니다.



