tail recursive
숙어C2함수가 마지막 동작으로 자기 자신을 호출하는
phrase
- 1
재귀 함수에서 자기 자신을 호출하는 동작이 함수가 수행하는 마지막 연산인C2
of a recursive function, having the recursive call as the final operation performed by the function
The factorial function can be rewritten in a tail recursive form by using an accumulator.
팩토리얼 함수는 누산기를 사용하면 tail recursive 형태로 다시 작성할 수 있다.
This version is not tail recursive, because it still has to multiply the result after the recursive call returns.
이 버전은 재귀 호출이 반환된 뒤에도 결과에 곱셈을 해야 하므로 tail recursive가 아니다.
뉘앙스 · 쓰임
recursive는 단순히 ‘재귀적인’이라는 넓은 뜻이고, tail recursive는 그중에서도 재귀 호출이 함수의 맨 마지막 단계에 있는 경우만 가리킵니다. tail-call optimized는 코드의 형태가 아니라 실제로 컴파일러나 실행 환경이 최적화를 적용했다는 점을 강조합니다.
주로 함수나 알고리즘을 설명할 때 형용사로 씁니다. 하이픈을 넣어 tail-recursive라고 쓰는 경우도 매우 흔합니다. 모든 재귀 함수가 tail recursive인 것은 아니며, tail recursive라고 해서 모든 언어에서 자동으로 메모리 최적화가 보장되는 것도 아닙니다.
유의어 뉘앙스 비교
- tail-recursive
- 같은 뜻의 하이픈 표기이며, 형용사로 쓸 때 더 선호되는 경우가 많습니다.
- using tail recursion
- 형용사 표현보다 설명적인 말로, 함수의 구조나 구현 방식을 풀어서 말할 때 씁니다.
반의어
- non-tail-recursive
- 재귀 호출 뒤에 추가 작업이 남아 있어 tail recursive가 아닌 구조를 가리킵니다.
- iterative
- 재귀가 아니라 반복문 등을 사용한다는 뜻으로, 반드시 반대 개념은 아니지만 구현 방식이 다릅니다.
어원 · 암기 팁
[English]컴퓨터 과학 용어 tail recursion에서 온 표현입니다. tail은 함수 실행의 ‘끝부분’을, recursive는 함수가 자기 자신을 다시 호출하는 성질을 뜻합니다. 따라서 tail recursive는 재귀 호출이 함수의 끝부분, 즉 마지막 연산 위치에 놓인다는 의미로 굳어졌습니다.
💡 함수의 ‘꼬리(tail)’ 맨 끝에서 자기 자신을 다시 부른다고 기억하면 됩니다.