예전 제가 C언어를 배울때 C로 배우는 알고리즘이라는 책을 본적이 있습니다
거기서 문제를 해결할때 , 재귀함수 호출을 사용해 문제를 해결하는 모습을 보여주었습니다
그때 많이 느꼈지만 재귀함수에 대한 이해가 어려웠습니다
도데체 어떤구조로 돌아가는지......... 특히 자기를 자기가 다시 호출하는 개념은
정말..... C언어 배우는 초보자로써는 최악이었습니다
성능평가도 보면 대체로 좋기는 하지만 항상 최적의 성능을 내지도 못하는거 같고
for문보다 결국 느리다 는 책의 내용과 함께 재귀함수를 for문으로 결국 바꾸는것을 보고
애써 , 재귀함수는 불필요 한거야.... 하며 자위하고 있었습니다
그때가 2년전이었었는데 , 지금까지 프로그래밍 하면서 재귀함수 호출을 써본적이 없습니다
현재는 학과 과목의 컴퓨터 프로젝트로 현재 포커게임 서버를 만들고 있는데
단일 쓰레드 환경에서 포커 알고리즘을 구현하고 돌릴려고 하니 , 함수로 단위를 끊어
알고리즘을 진행하는데......... 무척이나 어려웠습니다
어째튼 잘개 상황을 잘라 함수로 만들어 진행했는데... A가 B 함수를 호출하고 B 가 A 함수를
호출하는 모습을 보았습니다 , 나름대로 ...... 이렇게 문제를 해결하다니 ...... 놀라워 하고 있었는데
결국 A->B , B->A 방법의 재귀함수로 문제를 해결한것이었습니다
C로 배우는 알고리즘이라는 책에서는 남이 보기에는 이해하가 어렵지만
문제해결에는 재귀함수 호출이 좋다는 말을 했던 기억이 납니다
여기 분들은 어떻게 재귀함수를 쓰시는지 궁금해서 글 올립니다 :)
|
저는 다른곳에서는 잘 모르겠지만 트리구조, 계층적인 데이터구조를 다루는 곳에서는 재귀함수가 필수적이라는 생각이 들더군요.. 문제해결이 쉬워지는걸 느꼈습니다. 그외의 곳에서는 크게 필요성을 느끼지는 못했습니다.