Exercícios Resolvidos de Recursividade

Ver Teoria

Enunciado

Crie uma função f a c t o r i a l em C++ que recebe um número inteiro n e retorna, de forma recursiva, o valor de n ! (fatorial de n ).

Passo 1

Eai, tudo beleza?

Vamos começar lembrando o que é recursão! A recursividade é um mecanismo que permite uma função chamar a si mesma. E isso vai ser bem conveniente no caso do fatorial, você já já vai ver porquê.

Nessa questão, vamos iniciar declarando uma função chamada f a c t o r i a l . E os parâmetros dessa função vão ser as variáveis   n e n !

Como ambos n e n ! são valores inteiros, podemos declarar tanto os parâmetros, quanto o retorno da função como i n t .

Passo 2

Agora, vamos definir os casos iniciais da nossa recursão, que são os casos em que a função não chama a si mesma. No caso da função fatorial, sabemos que:

  • 0! = 1
  • 1! = 1

Isso será o suficiente para estabelecermos o caso inicial para a nossa função.

Passo 3

Vamos estabelecer a relação de recursão. Vamos analisar o 7 ! para isso.

7 ! = 7 * 6 * 5 * 4 * 3 * 2 * 1

Perceba que 6 * 5 * 4 * 3 * 2 * 1 = 6 ! , então podemos escrever 7 ! como 7 * 6 !

O 6 ! , por sua vez, pode ser escrito como 6 * 5 !

O 5 ! pode ser escrito como 5 * 4 ! , e assim segue.

Dessa forma, temos

n ! = n * n - 1 !

Percebeu como a gente tem um fatorial dentro de outro fatorial dentro de outro fatorial...?

É por isso que a recursão é interessante aqui, pois vamos chamar a função dentro dela mesma!

Implementando isso no nosso código, temos:

A função vai chamar a si mesma, até que N seja igual a 0 ou 1.

Resposta