English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ função recursiva

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.

Na linguagem C, chamada de função recursiva. ++Como funciona?

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).

Exemplo1:Usar recursão para decompor um número

// 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

Explicação de uso: Como esse exemplo funciona?

Supondo que o usuário tenha digitado4e passá-lo para essa função factorial().

  1. 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.

  2. 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.

  3. 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.

  4. 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().

  5. A terceira função factorial()2Retorna para a segunda função factorial().

  6. A segunda função factorial()6Retorna para a primeira função factorial().

  7. Por fim, a primeira função factorial()24Retorna para a função main(), que será exibida na tela.