10 이하의 숫자인
m과n을 입력받아 재귀함수를 이용하여 m의 n제곱의 값을 구하여라.
//ex)
10 이하의 정수 두 개 입력 : 2 4
2의 4제곱 : 16
#include <stdio.h>
long getPower(int m, int n) {
if (n == 0) {
return;
}
return m * getPower(m, n-1);
}
int main(void) {
int m, n;
printf("10 이하의 정수 두 개 입력 : ");
scanf_s("%d %d", &m, &n);
printf("%d의 %d제곱 : %d\n", m, n, getPower(m, n));
return 0;
}
int main(void) {
int m, n;
main()에서 정수형 타입의 m과 n을 선언해줍니다.
printf("10 이하의 정수 두 개 입력 : ");
scanf_s("%d %d", &m, &n);
10이하의 정수 두 개를 입력받아 각각 m과 n에 값을 저장합니다. 이 때 m은 제곱받을 수이고, n은 지수를 뜻합니다.
printf("%d의 %d제곱 : %d\n", m, n, getPower(m, n));
getPower(m,n);으로 getPower()함수에 m과n의 값을 파라미터로 줍니다.
printf문은 getPower()함수가 종료된 뒤에 실행되므로 지금은 넘어가는 것입니다.
long getPower(int m, int n) {
if (n == 0) {
return;
}
return m * getPower(m, n-1);
}
long타입을 반환하는 getPower()함수입니다. 파라미터로 받은 m과 n은 각각 제곱할 수와 지수입니다.
만약 지수를 나타내는 n이 0이 되었을 때에는 return하여 getPower()함수를 종료합니다.
n이 0의 값이 아닌 경우에는 return으로 넘어가는데 m에 getPower(m, n-1)을 곱해 재귀함수를 호출하며 동시에 n이 1감소합니다. n이 0이 될 때까지 m이 곱해지는 것이 누적되며 결과적으로 m이 n만큼 제곱된 값이 리턴됩니다.
printf("%d의 %d제곱 : %d\n", m, n, getPower(m, n));
return 0;
}
getPower(m,n);에서 리턴된 제곱된 값이 출력됩니다.
출력된 후 프로그램이 정상 종료됩니다.