English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico do C

Controle de Fluxo do C

Funções no C

Array no C

Ponteiro no C

String no C

Estruturas do C

Arquivos do C

Outros C

Manual de Referência do C

Recursão no C

Neste tutorial, você aprenderá a usar a linguagem de programação C para escrever funções recursivas com exemplos.

A função que chama a si mesma é chamada de função recursiva e essa técnica é chamada de recursão.

Como funciona a recursão?

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}
int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

A recursão continua até que se atinja uma condição que evite a recursão.

Para evitar recursão infinita, pode-se fazer chamadas recursivas em uma ramificação e não na outra, quando não há chamadas recursivas.Sentença if ... else(ou similar).

Exemplo: Soma de números naturais usando recursão (ou método semelhante).

#include <stdio.h>
int sum(int n);
int main() {
    int number, result;
    printf("Por favor, insira um número inteiro positivo: ");
    scanf("%d", &number);
    result = sum(number);
    printf("sum = %d", result);
    return 0;
}
int sum(int n) {
    if (n != 0)
        //A função sum() chama a si mesma
        return n + sum(n-1); 
    else
        return n;
}

Resultado de saída

Por favor, insira um número inteiro positivo:3
sum = 6

Inicialmente, a função main() chama a sum() e passa o número como parâmetro.

Supondo que o valor inicial de n na função sum() seja3. Durante a próxima chamada da função, será2Passado para a função sum(). Este processo continua até que n seja igual a 0.

Quando n é igual a 0, a condição if falha e a parte else é executada, finalmente retornando o inteiro e para a função main().

Vantagens e Desvantagens da Recursão

A recursão torna o programa elegante. No entanto, se a performance for crucial, use loops em vez de recursão, pois a recursão geralmente é muito mais lenta.

Embora isso seja verdade, a recursão é um conceito importante. É frequentemente usada em estruturas de dados e algoritmos. Por exemplo, é usualmente usada em problemas como a travessia de árvores.