-
[C Language] 26. 함수 - 재귀함수(Recursive) - C 언어CSE/C Language 2015. 6. 13. 10:23
1. 재귀함수의 사용방법
아래 예제를 통해 재귀함수를 사용한 예제 1부터 100까지 더하는 예제를 보자.
123456789101112131415161718192021222324252627/** recur1.c** Created on: 2015. 5. 17.* Author: root*/#include <stdio.h>int sum(int);int main(void) {int result = 0;result = sum(100);printf("Result = %d\n", result);return 0;}int sum(int x) {if (x == 0)return x;elsereturn x + sum(x - 1);}cs 2. 재귀함수의 문제점
- 재귀함수는 '재귀'라는 개념을 제공하는 함수를 뜻한다. 즉, 자신을 다시 호출하는 함수를 지칭한다.
- 자신을 다시 호출하면서 생성되는 변수는 새로이 생성된 변수들이다. 곧, 메모리 문제를 야기시킬수도 있다.
- 다음으로는 속도 저하의 문제이다. 그러나 문제점을 상쇄할 간결함과 편리함으로 재귀함수의 유용성은 뛰어나다.
3. 재귀함수의 초기화
- 재귀함수를 사용할 때 가장 많이 하는 실수 중에 하나가 재귀함수 안에서의 초기화이다.
- 초기화를 하지 않으면 시스템이 무한 루프의 재귀함수를 돌아서, 메모리 오류를 범하게 되는 것이다.
- 재귀함수에서의 초기화란 재귀함수를 끝내는 반환점을 제공한다. 그러므로 재귀함수 안에서의 초기화는 반드시 필요하며 사용하지 않으면 끝나는 지점을 찾을 수 없으므로 무한 루프에 빠지게 되는 것이다.
* Programming in C 서적을 참고하여 작성하였습니다
'CSE > C Language' 카테고리의 다른 글
[C Language] 29. 1차원 배열 - C 언어 (0) 2015.07.16 [C Language] 28. 배열 개요 - C 언어 (0) 2015.07.16 [C Language] 27. 시간함수 - C 언어 (0) 2015.07.16 [C Language] 25. 함수 - 리턴 값 여러 개 받기 - C 언어 (0) 2015.06.13 [C Language] 24. 함수 - 참조에 의한 호출(Call By Reference) - C 언어 (0) 2015.06.13 [C Language] 23. 함수 - 값에 의한 호출(Call By Value) - C 언어 (0) 2015.06.13