반갑습니다. 


폭염에 찌들어 가고 있는 중에..

책을 보다가 재귀함수에 대해서 언급한 내용이 있어서 여러분들은

어떻게 사용하고 계시는지 궁금해서 글을 써 봅니다. 


과거 제가 사용한 예 입니다. 

http://www.androidpub.com/1055866


제가 직접 사용 해보니 Recursive Fuction 은 제약사항이 많은데 

저는 이런 이유들 때문에 사용하거나 피하거나 합니다. 


단점들.. 


1. Fuction Call 할때 비용이 비싸다는것..

2. Stack Overflow 가 발생될 수 있다는것..

3. Escape 를 찾지 못할 경우 무한루프에 빠진다는것..

4. 중간에 끊어 졌을때 디버깅이 힘들다는 것..

5. 복잡한 비교를 통해서 경우에 따라 호출 할 경우 이해하기 힘들다는것..

6. 제일 중요한 이유중 하나로써.. 재귀함수로 안만들어도 대체 가능하다는것..


장점들..

1. 코드가 간결해 진다.

2. 논리적으로 반복되는 경우 재귀함수를 사용하면 편하다

3. Stack Overflow의 경우 functionCount 를 설정해서 원하는 depth 까지 정할 수 있으므로 

    두려워 할 필요가 음따..

4. 구차한 변수 선언 및 if ~ else 를 피할수 있어서 성능에 도움이 될 수 있다.

    ( if ~ else 문이 엄청나게 많을 경우 ..)



제가 요로코롬 사용중에 있었는데 책에서  "팩토리얼을 재귀함수로 사용하는 직원이 있으면 바로 해고하겠다"

라고 쓰여 있더군요.. 그 이유는 재귀함수는 그렇게 단순한 형태로 쓰이는게 아니다.. 라고 하네요..

보통 문법책에서 재귀함수를 팩토리얼로 예시 하는데 무서운 이야기 더군요..ㅎㅎ