C Recursão
C Recursão
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 a recursão funciona?
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 uma ramificação faz a chamada recursiva e outra não.
Exemplo:soma de números naturais usando recursão
#include <stdio.h>
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;
}
Saída
Enter a positive integer:3 sum = 6
Inicialmente, o
sum()
é chamado do main()
função com número passado como argumento. Suponha que o valor de n dentro de
sum()
é 3 inicialmente. Durante a próxima chamada de função, 2 é passado para o sum()
função. Este processo continua até n é igual a 0. Quando n for igual a 0, o
if
a condição falha e o else
parte é executada retornando a soma dos inteiros para o 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 isto, a recursão é um conceito importante. É frequentemente usado em estrutura de dados e algoritmos. Por exemplo, é comum usar a recursão em problemas como travessia de árvore.
Linguagem C
- C# Hello World - Seu primeiro programa em C#
- Palavras-chave e identificadores C#
- Variáveis C# e tipos de dados (primitivos)
- Operadores C#
- Operadores C# Bitwise e Bit Shift
- Entrada e saída básica em C#
- Expressões, instruções e blocos em C# (com exemplos)
- Comentários em C#
- Instrução C# switch
- C# ternário (? :) Operador