오래된 글

[C언어] 거듭제곱의 값을 구하는 프로그램

반응형
자연수 N의 k승을 구하는 프로그램을 만들어보자. (단, k≥0)
N^k로 거듭제곱함수인데, 이를 재귀함수로 나타내보자.
재귀함수란?
자기 자신을 호출하는 함수를 말한다.


코드 (Code)
#include <stdio.h>
int square(int, int);

int main(void)
{
	int N=0, cnt;
	
	 while(N<1) // 자연수가 아닐 경우 N값을 다시 받기 위한 while문
	{
		printf("제곱할 자연수를 입력하세요: ");
		scanf("%d",&N);

	}

	printf("몇 승 하시겠습니까?: ");
	scanf("%d",&cnt);
	printf("%d^%d = %d\n",N,cnt,square(N,cnt)); // square 함수 호출
	
	return 0;

}


int square(int N, int cnt) // 거듭제곱을 구하는 함수
{
	if(cnt==0) // cnt가 0이면 1을 리턴
		return 1;
	else // cnt가 0을 초과할 경우
		return N*square(N,--cnt); // 자기 자신인 square함수를 부르고, cnt의 값을 1 감소
}


결과 (Result)

제곱할 자연수를 입력하세요: -1
제곱할 자연수를 입력하세요: 2
몇 승 하시겠습니까?: 10
2^10 = 1024
반응형