programming/C
C // 재귀함수
깨래
2017. 12. 16. 16:04
재귀함수
재귀함수란, 함수 내에서 자기자신을 다시 호출하는 함수를 의미한다.
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