재귀함수는 꽤나 재밌고 구현하기에 어렵다... 그래도 이해하면서 문제 푸니까 재밌다!
문득 재귀함수랑 for문의 차이가 뭘까 궁금해져서 검색을 통해 공부해봤다.
https://velog.io/@gillog/Algorithm-%EC%9E%AC%EA%B7%80%EC%99%80-%EB%B0%98%EB%B3%B5%EB%AC%B8
위 블로그에 원하는 정보가 잘 정리되어 있었다.
간단히 말하면 for문이 더 좋은 것 같다.
속도적 측면에서도 for문이 더 우위에 있고 메모리 공간 측면에서도 재귀함수가 stack에 계속해서 쌓이기 때문에 더 불리하다고 한다. 그래서 stack overflow의 문제로 프로그램 비정상 종류가 발생할수도 있다고
그러면 도대체 왜? 재귀함수를 사용하는가 굳이 백준 단계별 문제에 있는 이유가 있지 않을까? 궁금해졌다.
위 블로그에 따르면 또 여러 블로그들도 공통적으로 하는 이야기가 코드를 더 깔끔하게 작성할 수 있다는 것이었다.
피보나치 수열이나, 오늘 함께 작성하려고 하는 재귀함수 문제의 하노이 탑과 같은 문제들에서 더 1.간단한 구현이 가능하다고-> 가독성 향상으로 이어지는 장점
또 하나는 변수 사용을 줄임으로 2.사이드 이펙트(side effect)가 없다는 점
성능적 측면에서 메모리, 속도 모두 뒤쳐지는 재귀함수지만 협업하는 상황에서 가독성 좋은 재귀함수는 도움이 될 것이라고 한다.
기대된다 ㅎㅎ
'CS' 카테고리의 다른 글
[CS] 비트단위(bitwise) 연산자 (0) | 2021.09.21 |
---|---|
[CS] Overflow (0) | 2021.09.21 |
댓글