22/01/06
1. 재귀함수란
- ‘나’를 다시 부르는 함수
- ex)
1 2 3 4 5 6 7 8 9 10 11 12 13
void rec(); int main() { rec(); return 0; } void rec () { printf("rec"); rec(); // 재귀함수 '나' 안에 '나'를 부름 }
- 결과 : recrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrecrec……
- 끝없이 호출됨
- 에러! Stack Overflow!
2. 재귀함수 조건+(예시 factorial!)
- 재귀함수 사용 시 조건부를 사용해서 빠져나올 수 있게 한다.
- 팩토리얼 재귀함수!
- 팩토리얼의 모양
![factorial_1]()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int factorial(int);
int main() {
int num;
scanf("%d", &num);
num = factorial(num);
printf("%d", num);
return 0;
}
int factorial(int num) {
if(num == 0) // 재귀함수 빠져나올 수 있는 조건
return 1;
return num * factorial(num - 1);
}
num = 5
실행 순서

결과 : 120
3. 그림그리며 생각하기
- 재귀함수를 짤 때, 어떤 식으로 코드가 움직이는지 직접 그려가면서 생각하는 것이 좋다.
- 1 ~ n까지 수의 합 함수 만들기
그림
![sum]()
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int sum(int);
int main() {
int num;
num = sum(10);
printf("%d", num);
return 0;
}
int sum(int num) {
if(num == 1)
return 1;
return num + sum(num-1);
}
결과 : 55


Comments powered by Disqus.