DEV Community

loading...
Cover image for Fatorial em Java

Fatorial em Java

franciscochaves profile image Francisco Chaves Originally published at franciscochaves.com.br ・1 min read

Olá pessoal, irei mostrar algumas formas de realizar o fatorial em Java.

Fatorial interativo

Vamos calcular o fatorial do número 5 de forma interativa:

public int fatorialInterativo(int numero){
  //variável para armazenar o valor a ser calculado
  int fatorial = 1;
  //laço de repetição
  for (int i = 1; i <= numero; i++) {
    fatorial = fatorial * i;
  }
  return fatorial;
}
Enter fullscreen mode Exit fullscreen mode

Fatorial recursivo

Queremos saber o fatorial do número 5 de forma recursiva:

public int fatorialRecursivo(int fatRec){
  //condição de parada
  if(fatRec <= 1){
    return 1 ;
  }
  //5!
  //5 * 4! = 120
  //4 * 3! = 24
  //3 * 2! = 6
  //2 * 1! = 2
  // 1! = 1
  // se o valor for igual a um, para a recursão e retorna calculando os valores
  return (fatRec \ fatorialRecursivo(fatRec - 1));
}
Enter fullscreen mode Exit fullscreen mode

Para realizar o fatorial de forma recursiva teremos que criar um método para retornar o valor calculado.
Então criaremos um método que retorne um inteiro e receba como parâmetro um valor para ser calculado, lembrando que qualquer método que não seja void retorna algum valor ou objeto, no método especificamos a condição de parada, ou seja, quando esta condição for verdadeira a recursão para, se a condição de parada for falsa retorna o mesmo método com outro parâmetro até encontrar a condição verdadeira, deve-se tomar cuidado para esta condição não se tornar uma recursão infinita, se a condição nunca for verdadeira o método irá consumir muita memória da máquina e ocorrerá um erro conhecido por StackOverflowError.

Código fonte no Github:

GitHub logo franciscojsc / fatorial-em-java

Fatorial em Java, recursivo e não recursivo.

🎉 Fatorial em Java 🎉

Obtenha o fatorial em Java de forma recursiva e não recursiva.

Fatorial

📝 Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Discussion (0)

pic
Editor guide