57 – 재귀호출

알고리즘 공부하면서 제일 열받게 하는 것 중 하나이지만, 중요한 것이 나왔다.

C언어에서는 임의의 함수에서 자기 자신을 호출할 수 있는데, 이를 재귀 호출(recursion)이라고 한다. 이러한 재귀 호출을 사용하는 예가 다양하게 있는데, 그냥 간단한 예시 하나나 둘 정도 보면서 재귀 호출에 대해서 살펴보도록 하겠다.

일단 다음과 같은 구조를 보자.

void r_func();

main()
{
r_func();
}

void r_func()
{
r_func();
}

main 함수에서 함수 r_func를 호출하면 제어가 r_func로 넘어간다. 그런데 r_func에서 다시 r_func를 호출하는 과정이 계속 반복된다. 이와 같이 자신을 호출하는 것을 재귀 호출이라고 한다. 그런데 위와 같은 프로그램은 실행이 종료되지 않고 계속 반복되므로 재귀 호출 함수는 꼭 재귀 호출이 종료되는 조건을 설정해 주어야 한다. 그 설정을 만들어 주는 과정이 어렵기 때문에 동작 순서를 제대로 구성하지 않으면 안된다. 알고리즘에서 중요하게 다루는 이유가 이런 이유다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.