Procedimentos recursiva
A recursiva procedimento é aquele que chama a mesmo.Em geral, não é a maneira mais eficiente gravar Visual Basic código.
O procedimento a seguir usa a recursão para calcular o fatorial do argumento original.
Function factorial(ByVal n As Integer) As Integer
If n <= 1 Then
Return 1
Else
Return factorial(n - 1) * n
End If
End Function
Considerações com procedimentos recursiva
Limitando condições.Você precisa criar um procedimento recursiva para testar a pelo menos uma condição que pode terminar a recursão e você também deve manipular o caso onde não há tal condição é satisfeita dentro de um número razoável de chamadas recursivas.Pelo menos uma condição que pode ser atendida sem falhas, o procedimento seja executado de um alto risco de execução em um loop infinito.
Uso de memória.Seu aplicativo tem uma quantidade limitada de espaço para as variáveis locais.Sempre que um procedimento chama a mesmo, ele usa mais de que o espaço para cópias adicionais de suas variáveis locais.Se esse processo continua indefinidamente, ele eventualmente faz com que um StackOverflowException erro.
Eficiência.Você pode substituir quase sempre um loop de recursão.Um loop não tem a sobrecarga de passagem de argumentos, Inicializando armazenamento adicional e retornar valores.O desempenho pode ser muito melhor sem chamadas recursivas.
Recursão mútua.Você pode observar muito baixo desempenho ou até mesmo um loop infinito, se dois procedimentos telefonar uns aos outros.Tal um design apresenta sistema autônomo mesmos problemas sistema autônomo um procedimento único recursiva, mas pode ser mais difícil para detectar e depurar.
Chamar com parênteses.Quando um Function procedimento chama a mesma recursivamente, você deve seguir o nome do procedimento com parênteses, mesmo que não haja nenhuma lista de argumentos. Caso contrário, o nome da função é executado sistema autônomo que representa o valor retornado da função.
Testes.Se você escrever um procedimento recursiva, você deve testá-lo com muito cuidado para certificar-se de que sempre atende alguma condição de limitação.Você também deve garantir que não é possível executar fora da memória devido a ter muitas chamadas recursivas.
Consulte também
Tarefas
Solucionando problemas de procedimentos
Solucionando problemas de exceções: Sistema.StackOverflowException
Conceitos
Parâmetros do procedimento e argumentos