Skip to main content

테일 콜이란 무엇입니까?

computer 컴퓨터 프로그래밍에서 꼬리 통화는 프로그램 소스 코드 내의 특정 상황입니다. 함수, 서브 루틴 또는 절차는 단순히 반환 값을 보유하는 변수를 전달하는 대신 다른 함수를 호출하여 예상 값을 반환합니다.이름 자체는 반환 할 값을 계산하기 위해 호출 된 함수가 반환 값을 제공하기 위해 호출하는 함수의 끝 또는 꼬리에 있음을 나타냅니다.특정 최적화 또는 컴파일러 동작으로 인해 주요 기능의 코드 위치를 저장하는 데 추가 스택 공간이 사용되지 않기 때문에 일부 프로그래머에게는 테일 콜이 관심이 있습니다.대신 테일 함수는 원래 함수가 호출 된 호출 지점으로 직접 반환 값 보고서를 생성하는 데 사용됩니다.재귀 통화가 매우 깊이 떨어지고 프로그램 실행을 중지 할 수있는 경우 발신자 주소를 저장하는 데 사용되는 스택 공간의 양이 재귀가 사용되는 상황에서는 테일 콜의 사용은 특히 유용합니다.Tail Call을 사용하면 프로그램의 속도, 메모리 사용 및 효율성을 높이는 데 도움이되지만 소스 코드가 특히 호출을 사용하여 호출을 사용하여 디버깅 및 추적하기가 어려워지는 상황이 발생할 수 있습니다.재귀.플레이트 스택과 같은 스택은 최초의 마지막 데이터 구조입니다.함수, 서브 루틴 또는 절차가 호출되면 스택 프레임이라고하는 호출 주소가 스택에 저장됩니다.즉, 함수 A를 호출 한 다음 함수 B를 호출하는 프로그램은 기능 B 용으로 하나의 스택 프레임과 기능 B 아래에 다른 하나의 스택 프레임이 있습니다. 함수 B가 완료된 후에는 스택 프레임이스택 및 실행은 기능 A로 돌아갑니다.이 프레임이 완성되었을 때 프레임이 스택에서 튀어 나와서 최초의 첫 번째 기능이 원래 호출되는 지점으로 프로그램 제어를 반환합니다.함수는 다른 함수의 반환 값을 호출 코드로 전송할 데이터로 직접 사용합니다.위의 예에서는 기능 A가 return 문과 함께 호출 B를 직접 호출하면 꼬리 호출이 형성되었습니다.통화 스택 내에서 두 함수 a와 b에 대한 스택 프레임이있는 대신 함수 B는 함수 a에서 리턴 주소를 받고 함수 A의 스택 프레임이 팝업되어 배치됩니다. 즉, 함수 B는 반환 값을 직접 전달합니다.기능 A로 전달하지 않고 기능 A라고 불리는 위치에 A. 기능 호출 속도가 높아지고 스택의 정보 양을 유지하는 데 도움이됩니다.그것들은 재귀 기능을위한 매우 매력적인 옵션입니다.재귀 함수는 목록 데이터 구조를 통과 할 때와 마찬가지로 값을 계산하기 위해 반복적으로 호출하는 기능입니다.중첩 된 기능 호출을 위해 추가 스택 프레임이 만들어지지 않으므로 스택 오버플로와 가능한 프로그램 종료의 즉각적인 위협없이 매우 깊은 레벨의 재귀를 안전하게 수행 할 수 있습니다.