본문 바로가기

C언어/C언어 문법

[C언어] 재귀함수

728x90
반응형

재귀함수

 

함수를 정의할 때 자기 자신을 호출하는 것도 가능하다.

 

완료되지 않은 함수를 다시 호출하는 것이 가능하기 때문이다.

 

완료되지 않은 함수(자기 자신)를 호출하면 그 함수의 복사본을 만들어서 그 복사본을 실행하게 되는 것이다.

 

 

 

 

예를 들어 'alpha'라는 재귀함수를 선언해보겠다.

 

#include <stdio.h>

void alpha(int num)
{
	if (num==1)
		return;
    printf("num = %d 입니다.\n", num);
    num--;
    alpha(num);
}

int main ()
{
    alpha(10);
    return 0;
}
 

 

먼저 'alpha'는 10을 입력받았으므로 10을 출력할 것이다.

 

그다음으로 num 은 1 줄어들 것이고 'alpha'가 다시 호출되었으므로 복사본이 만들어지고 실행된다.

 

num 이 1 줄어들었으니 9가 출력되고 'alpha'가 다시 복사되고 실행된다.

 

이 과정을 계속 반복하여 num이 1 이 될 때까지 반복되고 가장 마지막에 복사된 'alpha'부터 차례대로 함수가 종료된다.

 

 

 

 

이렇게 자기 자신을 호출하는 함수를 재귀함수라고 한다.

 

팩토리얼과 거듭제곱을 계산할 때에도 재귀함수를 사용할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형