재귀 프로시저는 자체를 호출하는 프로시저입니다. 일반적으로 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
재귀적으로 호출되는 경우 인수 목록이 없더라도 프로시저 이름을 괄호로 따라야 합니다. 그렇지 않으면 함수 이름은 함수의 반환 값을 나타내는 것으로 간주됩니다.
테스트. 재귀 프로시저를 작성하는 경우 항상 일부 제한 조건을 충족하는지 확인하기 위해 매우 신중하게 테스트해야 합니다. 또한 재귀 호출이 너무 많아 메모리가 부족할 수 없도록 해야 합니다.
참고하십시오
.NET