Share via


Procedimentos de recursiva (Visual Basic)

A recursiva procedimento é aquele que chama a mesmo.Em geral, isso não é a maneira mais eficiente gravar Visual Basic código.

O procedimento a seguir usa a recursão para calcular o fatorial de seu 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

Condições limitantes.Você deve criar um procedimento recursiva para testar a pelo menos uma condição que pode finalizar a recursão e você também deve tratar o caso em que nenhuma dessas condições for satisfeita dentro de um número razoável de chamadas recursivas.Pelo menos uma condição que pode ser atendida sem falha, o seu procedimento é executado 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 muito mais do que o espaço para cópias adicionais de variáveis locais.Se esse processo continua indefinidamente, ele eventualmente causará um StackOverflowException erro.

Eficiência.Quase sempre, você pode substituir um loop de recursão.Um loop não tem a sobrecarga de passando argumentos, Inicializando armazenamento adicional e retornar valores.O desempenho pode ser muito melhor sem chamadas recursivas.

Recursão mútua.Você pode observar um desempenho muito fraco ou até mesmo um loop infinito, se dois procedimentos chamam uns aos outros.Tal um design apresenta os mesmos problemas como um procedimento único recursiva, mas pode ser difícil de detectar e depurar.

Chamando com parênteses.Quando um Function procedimento chama a mesma recursivamente, você deve seguir o nome do procedimento com parênteses, mesmo se não houver nenhuma lista de argumentos.Caso contrário, o nome da função será executado como que representa o valor de retorno da função.

Testes.Se você escrever um procedimento recursiva, você deve testá-lo com muito cuidado para certificar-se de que ele sempre atende a alguma condição de limitação.Você também deve garantir que você não pode ficar sem memória devido a ter muitas chamadas recursivas.

Consulte também

Tarefas

Procedimentos de solução de problemas (Visual Basic)

Solucionando problemas de exceções: exceção System. StackOverflowException

Referência

StackOverflowException

Conceitos

Procedimentos no Visual Basic

Procedimentos Sub (Visual Basic)

Procedimentos Function (Visual Basic)

Procedimentos de propriedade (Visual Basic)

Procedimentos de operador (Visual Basic)

Parâmetros de procedimentos e argumentos (Visual Basic)

Procedimento de sobrecarga (Visual Basic)

Estruturas de loop (Visual Basic)