Crie uma função em C++ que recebe um número inteiro e retorna, de forma recursiva, o valor de (fatorial de ).
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 . E os parâmetros dessa função vão ser as variáveis e
Como ambos e são valores inteiros, podemos declarar tanto os parâmetros, quanto o retorno da função como .
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 para isso.
Perceba que , então podemos escrever como
O , por sua vez, pode ser escrito como
O pode ser escrito como , e assim segue.
Dessa forma, temos
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.