재귀 호출 함수(recursive call function)
- 함수는 보통 다른 함수를 호출하는데 재귀 호출 함수는 자기 자신을 호출
/*
* 재귀호출 함수
*/
#include <stdio.h>
void fruit(void); // 함수 선언
int main(void)
{
fruit(); // 함수 호출
return 0;
}
void fruit(void) // 재귀호출 함수 정의
{
printf("apple\n");
fruit(); // 자신을 다시 호출
}
※ 함수는 호출만으로도 일정 크기의 메로리를 사용하므로 무한 호출하면 프로그램 하나가 쓸 수 있는 메모리를 모두 사용하게 되어 메모리 부족으로 강제 종료됨. 따라서 컴파일러는 컴파일 과정에서 경고 메시지를 띄워 알려줌.
- 함수가 모든 명령을 수행하면 자동으로 반환하는데 반환 전에 자신을 호출하므로 처음부터 다시 시작
/*
* 세 번 실행되는 재귀호출 함수
*/
#include <stdio.h>
void fruit(int count); // 함수 선언
int main(void)
{
fruit(1); // 함수 호출
return 0;
}
void fruit(int count) // 호출 횟수를 매개변수에 저장
{
printf("apple\n");
if (count == 3) return; // 호출 횟수가 3이면 반환하고 끝낸다
fruit(count + 1); // 재호출 할 때 호출 횟수를 1 증가
}
- 첫 번째 코드블럭은 상당히 많은 apple을 출력하기에 함수가 3번만 호출되도록 수정
'C언어 > Study' 카테고리의 다른 글
[C언어 공부] 배열(array) (0) | 2024.08.19 |
---|---|
[C언어 공부] 재귀호출과 반복문의 차이점 (0) | 2024.08.18 |
[C언어 공부] 매개변수와 반환값 모두 없는 함수 (0) | 2024.08.18 |
[C언어 공부] 반환값이 없는 함수 (0) | 2024.08.16 |
[C언어 공부] 매개변수가 없는 함수 (0) | 2024.08.16 |