English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá a criar funções recursivas. Funções que chamam a si mesmas.
que chama a si mesmafunçãoE essa técnica é chamada de recursão.
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
A figura a seguir mostra como a recursão é chamada.
A recursão continua até que uma condição específica seja atendida.
Para evitar recursão infinita, você pode usar uma chamada recursiva em uma ramificação e nenhuma chamada recursiva na outra.if ... else(ou método semelhante).
// fatorial de n = 1*2*3*...*n #include <iostream> using namespace std; int factorial(int); int main() { int n; cout << "Digite um número para encontrar o fatorial: "; cin >> n; cout << "número " << n << " do fatorial = " << factorial(n); return 0; } int factorial(int n) { if (n > 1) { return n*factorial(n-1); } else { return 1; } }
Resultados de saída
Digite um número para encontrar o fatorial: 4 número 4o fatorial de 24
Supondo que o usuário tenha digitado4e passá-lo para essa função factorial().
No primeiro chamada da função factorial(), testarifpara true dentro da expressão. return num*factorial(num-1); A instrução foi executada, chamando a segunda função factorial() e passando o parâmetro num-1por3.
No segundo chamada da função factorial(), testar a expressão dentro do if true. return num*factorial(num-1); A instrução foi executada, chamando a terceira função factorial() e passando o parâmetro num-1por2.
No terceiro chamada da função factorial(), testar a expressão dentro do if true. return num*factorial(num-1); A instrução foi executada, chamando a quarta função factorial() e passando o parâmetro num-1é1.
No quarto função factorial(), teste a expressão dentro do if como falso. return 1A sentença ; é executada, retornando1Até a terceira função factorial().
A terceira função factorial()2Retorna para a segunda função factorial().
A segunda função factorial()6Retorna para a primeira função factorial().
Por fim, a primeira função factorial()24Retorna para a função main(), que será exibida na tela.