꼬리 재귀는 무엇입니까?
테일 재귀는 메서드가 자신을 호출 한 다음 해당 두 번째 호출의 값을 즉시 반환하는 프로그래밍 메서드 호출 유형입니다. 다시 말해, 테일 재귀는 메서드 내부의 마지막 문이 동일한 메서드에 대한 또 다른 호출 일 때 발생합니다. 두 번째 메소드 호출의 매개 변수는 일반적으로 첫 번째 메소드의 매개 변수와 다르지만 필수는 아닙니다. 이 재귀가 작동하려면 자체 호출되는 메서드가 숫자, 문자열 또는 다른 개체와 같은 구체적인 값을 반환해야합니다. 값을 반환하지 않는 Void 메서드는 재귀에 적합하지 않습니다.
재귀 호출이 호출 메소드의 마지막 명령문이어야한다는 요구 사항이 재귀 호출이 메소드의 마지막 행이라는 것을 의미하지는 않습니다. 제어 구조 내에서 적절한 꼬리 재귀 호출을 찾을 수도 있습니다. 즉, 소스 코드에서 제어 구조는 호출이 아닌 메소드를 종료 할 수 있습니다. 이 경우의 중요한 차이점은 제어 구조가 프로그래밍 문이 아니라 컴퓨터 언어의 내장 부분이라는 것입니다.
테일 재귀는 Java 및 C ++를 포함한 많은 컴퓨터 언어로 존재합니다. 종종 이러한 재귀 호출은 for 루프, while 루프 또는 goto 문과 같은 다른 수단을 사용하여 다시 작성할 수 있습니다. 재귀의 유틸리티는 동일한 메소드에 대한 많은 순차 호출을 작성할 때 발견됩니다. 재귀는 종종 반복적 인 작업을 수행하는 가장 깨끗하고 쉬운 방법입니다.
꼬리 재귀의 일반적인 예는 숫자의 계승을 계산하는 방법입니다. 이 프로세스는 숫자를 곱하기 전에 모든 숫자에서 시작하기 때문에 이상적입니다. 따라서 계승 5를 구하려면 5 * 4 * 3 * 2 * 1을 곱하는 것이 올바른 과정입니다. 재귀는 계승 방법이 구조화되는 방식으로 인해 발생합니다. 계승이 1이면 1을 반환하고, 그렇지 않으면 방법에 주어진 숫자의 계승에서 1을 뺀 값을 반환합니다. 이 메소드는 최종 메소드 호출에 대한 제어문을 사용하거나 사용하지 않고 테일 재귀 유형을 사용하여 동등하게 작성할 수 있으므로 유용합니다.
테일 재귀는 여러 유형의 재귀의 한 예일뿐입니다. 모든 유형의 재귀에 대한 개념은 본질적으로 동일하며 어떤 방식에서는 메서드가 자체적으로 호출됩니다. 이러한 유형 중에서 꼬리 재귀의 구별은 재귀 호출의 값이 즉시 리턴되고 해당 호출 후 호출 메소드에서 다른 것은 발생하지 않는다는 것입니다.