Um conceito pouco usado em C é função de recursão. Uma função recursiva é simplesmente uma função que chama a si mesmo . Funções recursivas podem ser úteis em certas funções , mas geralmente pode ser substituído usando uma malha . Objetivo da Função recursiva
Uma função recursiva pode ser usado quando uma operação precisa ser executada repetidamente em um conjunto de dados. Por exemplo, uma função recursiva pode executar repetidamente uma operação matemática em um valor numérico até que uma condição seja atendida.
Criando uma função recursiva
Qualquer função que chama a si mesma é uma função recursiva . Não existem requisitos especiais para a função de chamar-se , que pode fazê-lo como cait chamaria qualquer outra função . Como exemplo , o seguinte é uma função recursiva para calcular o próximo número em uma seqüência de Fibonacci :
longo fib ( long n)
{
if ( n < = 2) {
retornar 1 ;
}
mais
{
retorno fib (n - 1) + fib ( n - 2);
} }
problemas com recursão
recursão tem vários problemas possíveis que devem ser considerados antes de escrever uma função recursiva . Funções recursivas pode ser muito ineficiente , não só existe uma sobrecarga de pilha de chamar repetidamente a função , funções recursivas pode facilmente acabar com tempos de execução exponencial , dependendo de como eles são escritos . Funções recursivas também corre o risco de causar um estouro de pilha se o número de chamadas recursivas é muito alto.
Recursão Vs . Iteração
maioria das funções recursiva pode ser implementado como uma função não - recursiva que utiliza um ciclo iterativo . Isso tende a ser mais eficiente e mais seguro, mas em alguns casos pode ser mais difícil de escrever e de ler.
Funções recursivas são mais frequentemente utilizados durante a navegação com estrutura de árvore , ou quando usar iteração faria o funcionar muito mais complexa. Na maioria dos outros casos , a iteração deve ser usado em seu lugar.