Fatorial Recursivo em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 15/09/2012)
[ Hits: 34.403 ]
O algoritmo a seguir calcula recursivamente o fatorial de um número dado pelo usuário. É interessante prestarmos atenção em que, como os valores de um fatorial crescem exponencialmente e o algoritmo utiliza int, o valor máximo a ser passado deverá ser 12. Vocês podem testá-lo com long, no entanto o maior valor de long será excedido quando se passa dos 21 (os cálculos começaram a sair errado, façam o teste). Se quiserem, tentem também realizar estes cálculos com double e float.
Espero que seja de ajuda. Qualquer dúvida sintam-se livres para perguntar.
//Importa a classe Scanner para realizar leituras do teclado.
import java.util.Scanner;
/**
* Este é um algoritmo que calcula o fatorial de um número utilizando as artimanhas
* da recursão.
* Este algoritmo foi baseado na versão em C de um amigo.
* Vocês podem encontra-lo em: www.vivaolinux.com.br/script/Fatorial-Recursivo
* Espero que seja de ajuda ao pessoal que está começando agora. xD
*/
public class Fatorial {
/**
* Este é um método estático que faz o calculo do fatorial de um número que é
* passado como parâmetro e retorna para a função principal o resultado.
*/
public static int fatorial(int num) {
/**
* Este é o caso base, se o número passado por parametro for 0 ou 1,
* ele retorna o resultado 1 e finaliza o método.
*/
if (num <= 1) {
return 1;
} else {
/**
* chama o método fatorial novamente, mas dessa vez enviando como
* parametro (n - 1).
*/
return fatorial(num - 1) * num;
}
}
public static void main(String[] args) {
//Declara uma variável para guardar o número que o usuário digitar
int numero;
//Instancia um objeto da classe Scanner para realizar a leitura do teclado (System.in)
Scanner entrada = new Scanner(System.in);
//Imprime na saída
System.out.println("Digite o número que você pretende obter o fatorial.");
/**Aqui a variável 'numero' irá receber a entrada que o usuário digitar.
* A minha instancia de Scanner, no caso 'entrada', utilizará o método nextInt()
* para ler o que vier do teclado como sendo um int.
*/
numero = entrada.nextInt();
//imprime o resultado do fatorial
System.out.println("O fatorial de " + numero + " é " + fatorial(numero) + ".");
}
}
Mensagem usando opção gráfica JOptionPane
Exemplo de POO usando conceitos de calorimetria em Java
A Fundação da Confiança Digital: A Importância Estratégica de uma PKI CA na Segurança de Dados
Como enviar dicas ou artigos para o Viva o Linux
Como Ativar a Aceleração por GPU (ROCm) no Ollama para AMD Navi 10 (RX 5700 XT / 5600) no Gentoo
Cairo Dock ainda funcional nos dias de hoje
Configuração de IP fixo via nmcli e resolução de nomes via /etc/hosts no Gentoo
Removendo o bloqueio por erros de senha no Gentoo (systemd)
Papel de Parede Animado no KDE Plasma 6 (Com dicas para Gentoo)
Homebrew: o gerenciador de pacotes que faltava para o Linux!
Tentando fazer um "linux ricing" mas falhando miseravelmente... (3)
Elilo e Sofrimento no Slackware (3)
Não consigo instalar as bibliotecas em Python pelo terminal. (1)









