재귀 함수
재귀 함수의 기본적 이해
-> 자기 자신을 다시 호출하는 형태의 함수
재귀를 공부해야 하는 이유
자료구조나 알고리즘을 공부할 때
재귀 함수가 유용하게 사용되어 진다.
탈출 조건의 필요성
- 무한 재귀 호출을 피하기 위해서 (무한 루프)
- 무한 재귀 호출 -> stack overflow
탈출 조건의 이해
void Re(int n){
...
if(n==1)
return;
Re(n-1);
}
int main(){
int a= 5;
Re(5);
}
--> return은 값의 반환 뿐만 아니라
함수를 빠져나올 때 쓸 수 있다.
재귀 함수 Design
- 팩토리얼 계산을 위한 알고리즘
int factorial(int n){
if(n==1) return 1;
else return n * factorial(n-1);
}
재귀함수의 효율성
속도나 메모리의 절약을 의미하는 것이 아니다.
오히려 잦은 함수 호출로 인한 속도 저하와
stack overflow, 즉 다룰 수 있는 범위를
초과하는 문제가 발생 할 수 있다.
논리적 사고를 그대로 옮기거나
코드를 단순화 하기에 적합하다!
'C, 자료구조' 카테고리의 다른 글
[자료구조] 연결 리스트의 이해(2) (0) | 2017.04.02 |
---|---|
[자료구조] 연결 리스트의 이해(1) (0) | 2017.03.29 |
[자료구조] 단순 정렬 알고리즘 (버블, 삽입, 선택) (0) | 2017.02.17 |
[C] static 변수 (0) | 2016.12.21 |
[C] 함수 포인터와 void 포인터 (0) | 2016.12.20 |