Compartilhar via


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

Procedimentos no Visual Basic

Subprocedimentos

Procedimentos de função

Procedimentos de Propriedade

Procedimentos de Operador

Parâmetros do procedimento e argumentos

Sobrecarga de procedimento

Estruturas de loop

Referência

StackOverflowException