재귀함수
재귀함수란, 함수 내에서 자기자신을 다시 호출하는 함수를 의미한다.
ex)
1 2 3 4 5 | void recursive(int n) { printf("Recursive call! \n"); Recursive(); // 나 자신을 재 호출 } |
완료되지 않음 함수를 다시 호출하는 것은 가능하다.
4행이 호출될 때, 함수의 처음으로 돌아가 재 진입한다고 생각하지 말고 4행이 호출되면 recusive의 함수의 복사본을 만들어서, 복사본이 실행된다고 생각하자.
ex)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h> void recursive(int n) { if(n<=0) return; printf("Recursive call! %d\n",n); recursive(n-1); // 나 자신을 재 호출 } int main() { recursive(3); return 0; } |
실행결과
Recursive call! 3
Recursive call! 2
Recursive call! 1
5행의 조건문이 들어감으로써, 재귀함수의 탈출 조건이 성립되어 함수가 반환하기 시작한다.
ex)Factorial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include<stdio.h> int fct(int n) { if(n==0) return 1; else return n * fct(n-1); } int main() { int n; int j; printf("0이상 정수 입력:"); scanf("%d",&n); j=fct(n); printf("%d팩토리얼은? %d\n",n,j); return 0; } |
출력결과
0이상 정수 입력:5
5팩토리얼은? 120
0이상 정수 입력:3
3팩토리얼은? 6
'programming > C' 카테고리의 다른 글
C // 포인터 (0) | 2017.12.19 |
---|---|
C // 1차원배열 (0) | 2017.12.18 |
C // 변수 (0) | 2017.12.15 |
C // 함수 (0) | 2017.12.13 |
C// 조건에 따른 흐름의 분기 (0) | 2017.12.11 |