Share via


재귀 프로시저(Visual Basic)

재귀 프로시저는 자체를 호출하는 프로시저입니다. 일반적으로 이는 Visual Basic 코드를 작성하는 가장 효과적인 방법은 아닙니다.

다음 절차에서는 재귀를 사용하여 원래 인수의 계승을 계산합니다.

Function Factorial(n As Integer) As Integer
    If n <= 1 Then
        Return 1
    End If
    Return Factorial(n - 1) * n
End Function

재귀 프로시저에 대한 고려 사항

제한 조건. 재귀를 종료할 수 있는 최소 하나 이상의 조건을 테스트하기 위해 재귀 프로시저를 설계해야 하며, 적절한 재귀 호출 횟수 내에서 이러한 조건이 충족되지 않는 경우에도 처리해야 합니다. 반드시 충족될 수 있는 조건이 하나라도 없으면 프로시저가 무한 루프에서 실행될 위험이 높습니다.

메모리 사용량. 애플리케이션에는 지역 변수를 위한 공간이 제한되어 있습니다. 프로시저가 자신을 호출할 때마다 지역 변수의 추가 복사본을 위해 더 많은 공간을 사용합니다. 이 프로세스가 무기한으로 계속되면 결국 StackOverflowException 오류가 발생합니다.

효율성 거의 항상 재귀 대신 루프를 사용할 수 있습니다. 루프에는 인수 전달, 추가 스토리지 초기화, 값 반환의 오버헤드가 없습니다. 재귀 호출이 없으면 성능이 훨씬 향상될 수 있습니다.

상호 재귀. 두 프로시저가 서로 호출하는 경우 성능이 매우 저하되거나 무한 루프가 발생할 수 있습니다. 이러한 설계는 단일 재귀 프로시저와 동일한 문제를 나타내지만 감지하거나 디버그하기가 더 어려워질 수 있습니다.

괄호로 호출. Function 프로시저가 자신을 재귀적으로 호출되는 경우 인수 목록이 없더라도 프로시저 이름을 괄호로 묶어야 합니다. 그렇지 않으면 함수 이름이 함수의 반환 값을 나타내는 것으로 간주됩니다.

테스트. 재귀 프로시저를 작성하는 경우 항상 일부 제한 조건을 충족하는지 확인하기 위해 매우 신중하게 테스트해야 합니다. 또한 재귀 호출이 너무 많아 메모리가 부족해지지 않도록 해야 합니다.

참고 항목