English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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).
#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().
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.