LC·Dict

tail recursive

숙어C2
US/ˌteɪl rɪˈkɝː.sɪv/UK/ˌteɪl rɪˈkɜː.sɪv/

함수가 마지막 동작으로 자기 자신을 호출하는

phrase

  1. 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)’ 맨 끝에서 자기 자신을 다시 부른다고 기억하면 됩니다.