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);
에서 리턴된 제곱된 값이 출력됩니다.
출력된 후 프로그램이 정상 종료됩니다.