꼬리 재귀 - Tail Recursion
재귀 호출이 끝난 후 현재 함수에서 추가 연산을 요구하지 않도록 구현하는 재귀의 형태
함수 호출이 반복되어 스택이 깊어지는 문제를 컴파일러가 선형으로 처리하도록 알고리즘을 바꿔 스택을 재사용할 수 있게 됩니다. 꼬리 재귀를 사용하기 위해서는 컴파일러가 이런 최적화 기능을 지원해야 합니다.
가장 중요한건 현재 함수에서 추가 연산을 하면 안된다는 겁니다.
목차
관련 글
순환 호출 (circular call) - 재귀적 호출 (recursive call)
https://steadiness-dev-invest.tistory.com/84
순환 호출 (circular call) - 재귀적 호출 (recursive call)
순환 호출 (circular call) - 재귀적 호출 (recursive call) 함수 내부에서 함수가 자기 자신을 또다시 호출하는 행위를 의미합니다. 이러한 재귀 호출은 자기가 자신을 계속해서 호출하므로, 끝없이 반
steadiness-dev-invest.tistory.com
파이썬에서 에러 발생 시 (maximum recursion depth exceeded in comparison)
https://steadiness-dev-invest.tistory.com/85
[파이썬 에러정리] maximum recursion depth exceeded in comparison
maximum recursion depth exceeded in comparison 비교에서 최대 깊이를 넘었다 라는 의미로 해석되는데 파이썬에선 재귀 호출 깊이의 제한이 있습니다. 재귀 호출이 깊어질수록 프로그램 속도가 느려질
steadiness-dev-invest.tistory.com
특징
- 재귀 호출이 끝난 후 현재 함수에서 추가 연산을 하지 않으면 스택이 깊어지는 게 아닌 재사용을 하게 됩니다.
- 일반 재귀 호출에 비해 빠른 속도로 실행됩니다.
- 메모리 문제에서 비교적 자유롭습니다.
- 구현이 조금 복잡합니다.
예시 코드
마무리
정리를 하다보니까 이어서 계속 정리해야 되는 개념이 나오네요.
공부는 끝이 없네요 ㅎㅎ..
그럼이만~
'용어정리 > IT' 카테고리의 다른 글
프레임워크 , 라이브러리, API (0) | 2022.08.25 |
---|---|
객체지향이란 무엇인가 (0) | 2022.08.13 |
순환 호출 (circular call) - 재귀적 호출 (recursive call) (0) | 2021.06.03 |