재귀함수(Recursion)은 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법을 의미한다. Ex) 팩토리얼
재귀함수는 스택에 저장하고(push) 빼내는(pop) 형식을 생각하면 이해하기 편한데, 이를 c 코드로 정리하면 다으모가 같다.
void Rec(0){
if (n<=0) return;
printf("Rec(%d)\n", n));
Rec(-1);
printf("Rec(%d) done! \n", n));
}
void Rec(1){
if (n<=0) return;
printf("Rec(%d)\n", n));
Rec(0);
printf("Rec(%d) done! \n", n));
}
void Rec(2){
if (n<=0) return;
printf("Rec(%d)\n", n));
Rec(1);
printf("Rec(%d) done! \n", n));
}
재귀함수 n!는 n*(n-1)! 를 진행하는 것에 반해, for loop n!는 n부터 1까지 모든 수를 곱한다는 점에서 차이가 있다. 재귀의 경우에는 코드를 이해하는 데 비교적 간편한 대신, 실행시간이 길어질 수 있다는 단점이 있다.
반응형
'Computer Science' 카테고리의 다른 글
[자료구조] Linked List - 삽입, 삭제 개념 (1) | 2024.01.28 |
---|---|
[자료구조] 재귀함수 - 하노이탑에서의 반복 패턴과 문제 해결법 (0) | 2024.01.27 |
[자료구조] 이진탐색 알고리즘 (1) | 2024.01.25 |
[운영체제] 우선순위 스케줄링 (0) | 2024.01.24 |
[운영체제] 가상 메모리 개념, 가상메모리와 메모리 공유 (1) | 2024.01.23 |