Neste tutorial, você aprenderá a escrever funções recursivas em programação C com a ajuda de um exemplo.
Uma função que chama a si mesma é conhecida como função recursiva. E, esta técnica é conhecida como recursão.
Como funciona a recursão?
void recurse () (… recurse (); …) int main () (… recurse (); …)
A recursão continua até que alguma condição seja atendida para evitá-la.
Para evitar a recursão infinita, a instrução if… else (ou abordagem semelhante) pode ser usada onde um branch faz a chamada recursiva e outro não.
Exemplo: soma de números naturais usando recursão
#include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; )
Resultado
Insira um número inteiro positivo: 3 soma = 6
Inicialmente, o sum()
é chamado a partir da main()
função com número passado como argumento.
Suponha que o valor de n dentro sum()
seja 3 inicialmente. Durante a próxima chamada de função, 2 é passado para a sum()
função. Este processo continua até que n seja igual a 0.
Quando n é igual a 0, a if
condição falha e a else
parte é executada, retornando a soma dos inteiros para a main()
função.
Vantagens e desvantagens da recursão
A recursão torna o programa elegante. No entanto, se o desempenho for vital, use loops, pois a recursão é geralmente muito mais lenta.
Dito isso, a recursão é um conceito importante. É freqüentemente usado em algoritmos e estrutura de dados. Por exemplo, é comum usar recursão em problemas como travessia de árvore.