Compartilhar via


Criando procedimentos recursivos

Os procedimentos têm uma quantidade limitada de espaço para variáveis. Cada vez que um procedimento se chama, mais desse espaço é usado. Um procedimento que chama a si mesmo é um procedimento recursivo. Um procedimento recursivo que se chama continuamente eventualmente causa um erro. Por exemplo:

Function RunOut(Maximum) 
    RunOut = RunOut(Maximum) 
End Function

Esse erro pode ser menos óbvio quando dois procedimentos se chamam indefinidamente ou quando alguma condição que limita a recursão nunca é atendida. A recursão tem seus usos. Por exemplo, o procedimento a seguir usa uma função recursiva para calcular factorials.

Function Factorial (N) 
    If N <= 1 Then ' Reached end of recursive calls. 
        Factorial = 1 ' (N = 0) so climb back out of calls. 
    Else ' Call Factorial again if N > 0. 
        Factorial = Factorial(N - 1) * N 
    End If 
End Function

Você deve testar seu procedimento recursivo para garantir que ele não se chame tantas vezes que você fica sem memória. Se você receber um erro, verifique se o procedimento não está se chamando indefinidamente. Depois disso, tente conservar a memória por:

  • Eliminando variáveis desnecessárias.
  • Usando tipos de dados diferentes de Variant.
  • Reavaliando a lógica do procedimento. Geralmente, você pode substituir loops aninhados pela recursão.

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.