Compartilhar via


Funções Recursivas

Qualquer função em um programa C pode ser chamada recursivamente, ou seja, pode chamar a si mesma. O número de chamadas recursivas está limitado ao tamanho da pilha. Consulte a opção de vinculador /STACK (Stack Allocations) para obter informações sobre as opções de vinculador que definem o tamanho da pilha. Sempre que a função é chamada, um novo armazenamento é alocado para os parâmetros e para as variáveis auto e register, de modo que os valores em chamadas anteriores inacabadas não são substituídos. Os parâmetros só são diretamente acessíveis para a instância da função na qual são criados. Os parâmetros anteriores não são diretamente acessíveis para instâncias resultantes da função.

Observe que as variáveis declaradas com o armazenamento static não exigem um novo armazenamento com cada chamada recursiva. O armazenamento existe para todo o tempo de vida do programa. Cada referência a essa variável acessa a mesma área de armazenamento.

Exemplo

Este exemplo ilustra chamadas recursivas:

int factorial( int num );      /* Function prototype */

int main()
{
    int result, number;
    .
    .
    .
    result = factorial( number );
}

int factorial( int num )      /* Function definition */
{
    .
    .
    .
    if ( ( num > 0 ) || ( num <= 10 ) )
        return( num * factorial( num - 1 ) );
}

Confira também

Chamadas de função