Exemplo de fatorial:
A chamada de um método para ele mesmo, é igual a chamada de qualquer outro método, exemplo de método recursivo que calcula o fatorial n!
O fatorial de um número é dado pela multiplicação de seus antecessores, ou seja, se n
é igual 3
, então seu fatorial será 3 * 2 * 1
. O fatorial de 0!
(zero) é igual a 1
.
O método recursivo fica da seguinte forma:
Dentro de um método recursivo é muito importante definirmos como será a condição base para que o método pare a recursão, ou seja, como o método vai parar de se chamar.
Neste caso queremos que o método para de chamar ele mesmo, quando o valor que será calculado o fatorial for igual a 0
(zero), pois neste caso sabemos a resposta direta sem ter que fazer cálculos.
Chamando o método fatorial(3)
, queremos calcular 3 * 2 * 1
.
Explicando o fluxo do programa:
-
O método fatorial recebe o valor de
x
igual a3
, verifica sex
é igual a0
(zero), como não é igual, então calcula3
multiplicado porfatorial(2)
, neste ponto estamos fazendo uma chamada recursiva. -
O método fatorial recebe o valor de
x
igual a2
, verifica sex
é igual a0
(zero), como não é igual, então calcula2
multiplicado porfatorial(1)
. -
O método fatorial recebe o valor de
x
igual a1
, verifica sex
é igual a0
(zero), como não é igual, então calcula1
multiplicado porfatorial(0)
. -
O método fatorial recebe o valor de
x
igual a0
(zero), verifica sex
é igual a0
(zero), então para a execução do método e retorna o valor1
. -
Volta para o método
fatorial(1)
na linha 26 e faz a multiplicação dex
que vale1
pelo resultado dofatorial(0)
que é1
, ou seja1 * 1
e retorna o valor1
. -
Volta para o método
fatorial(2)
na linha 26 e faz a multiplicação dex
que vale2
pelo resultado dofatorial(1)
que é1
, ou seja2 * 1
e retorna o valor2
. -
Volta para o método
fatorial(3)
na linha 26 e faz a multiplicação dex
que vale3
pelo resultado dofatorial(2)
que é2
, ou seja3 * 2
e retorna o valor6
. -
Volta para o método que chamou o
fatorial(3)
, neste caso o métodomain()
na linha 7, guarda o resultado dofatorial(3)
que é6
, dentro da variávelresp
, e imprime o resultado da variávelresp
na linha 8.
Conteúdos relacionados
- Implementando métodos recursivos no Java
- Implementando Fibonacci de modo recursivo no Java
- Implementando uma busca binária no Java
- Entendendo como funciona a implementaçãdo do Bubble Sort