aula 112

Como calcular o fatorial com recursão?

Na aula anterior aprendemos o que é uma função / procedimento recursivo. Nesta aula criaremos nossa primeira função recursiva para calcular o fatorial de um número.

Como calcular o fatorial com recursão?

Antes de qualquer linha de código, vamos relembrar o que é o fatorial de um número.

Calcular um fatorial de um número x significa realizar todas as multiplicações de x até 1. Vamos a um exemplo.

O fatorial de 4, representado por 4! é:

4! = 4 * 3 * 2 * 1 = 24.

Matematicamente falando existem apenas dois números cujo fatorial não precisa ser calculado, o zero e o um:

1! = 1 e
0! = 1

Agora já temos tudo que precisamos para fazer nossa função recursiva.

O primeiro ponto importante ser observado é o ponto de parada. Nesta caso temos dois pontos de parada possíveis, zero e um. Caso x seja um desses dois valores, basta retornar 1.

	se(x == 0 ou x == 1)
		retorne 1

Contudo, se x não for zero nem um, precisamos então iniciar as multiplicações e fazer a chamada recursiva. Isso pode ser feito da seguinte forma:

	senao
		retorne x * fatorial(x - 1)

Perceba que fazemos a multiplicação de x com o que vir de retorno da chamada recursiva. Como nosso ponto de parada retorna 1, faremos as multiplicações de 1 até x.

Imagine que o usuário digitou o número 5. A multiplicação no senao apenas será feita quanto o computador tiver o retorna da chamada. Assim, Quando chegar no nosso ponto de parada será retornado 1. Esse 1 será multiplicado com 2 e o resultado será retornado. O 2, por sua vez, será multiplicado com 3 (2 * 3 = 6) e o 6 será retornado. O 6 será multiplicado com o 4 (6 * 4 = 24) e o 24 será retornado. O 24 será multiplicado com o 5 (24 * 5 = 120) e, como acabaram as chamadas recursivas que estavam empilhadas, o resultado 120 será retornado para quem chamou na função main.

Código completo em C para calcular o fatorial com recursão

programa{

/*	
        Aula 112: Fatorial com função recursiva

        Escrito por Wagner Gaspar
        Março de 2021
*/

        // função recursiva que calcula e retorna o fatorial de x
	funcao inteiro fatorial(inteiro x){
		se(x == 0 ou x == 1)
			retorne 1
		senao{
			retorne x * fatorial(x - 1)
		}
	}
	
	funcao inicio(){
		inteiro valor

		escreva("Digite um valor positivo: ")
		leia(valor)

		escreva("\nFatorial de ", valor, " é: ", fatorial(valor))
	}
}

Deixe um comentário

3 × 5 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.