알고리즘(アルゴリズム)/알고리즘 이모저모(アルゴリズムの緒論)
재귀 함수(recursive function)에 대한 메뉴얼
JIN_YOUNG _KIM
2023. 1. 26. 06:16
1. 일단은 재귀 함수로 알고리즘을 짜라!
2. 재귀 함수에 의해서 stack over flow가 일어날 가능성이 있는 경우, 반복문으로 고치자.
3. 만약 컴파일러가 tail call에 대한 optimization을 제공을 한다면, 꼬리 재귀 함수로 구현하는 것도 나쁘지 않음
( 꼬리 재귀 함수의 코드는 반복문으로 바꾸기에 굉장히 직관적이고 좋다. 그러나 구현이 어려움 ㅠㅠ)
재귀 함수의 장점
1. 가독정 좋고, 코드가 짧음.
2. 함수의 stack frame 덕분에 각 함수 단계의 변수 상태가 저장된다. ( 일반 반복문에서는 개발자가 직접적으로 변수 상태를 저장해줘야 한다.)
3. 코드 검증도 쉬움.
재귀 함수의 단점
1. 실행 과정이 직관적이지 않기에, 실행 과정 단계에서의 분석이 어렵다.
-> 이렇게 재귀 함수로 짜놓으면, 잘 실행이 될 거라는 맹목적인 믿음이 필요!!
-> 재귀 함수의 실행 과정을 생각하려고 하지 말자!!