Criando procedimentos recursivos

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

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

Esse erro pode ser menos óbvio quando dois procedimentos chamam um ao outro 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 fatoriais.

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 a ponto de você ficar 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:

  • Eliminando variáveis desnecessárias.
  • Usar tipos de dados diferentes de Variant.
  • Reavaliando a lógica do procedimento. Muitas vezes, você pode substituir loops aninhados por 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.