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
반응형
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 배열 (0) | 2024.02.11 |
---|---|
[C언어] 지역변수, 전역변수 (0) | 2024.02.11 |
[C언어] 함수의 선언, 호출, 정의 / 반환(return), 매개변수, 전달인자, 파라미터(parameter), 아규먼트(argument) (0) | 2024.02.10 |
[C언어] switch문 (0) | 2024.02.10 |
[C언어] break, continue (0) | 2024.02.10 |