Fatorial Recursivo em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 15/09/2012)
[ Hits: 34.313 ]
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) + ".");
}
}
Cronômetro e/ou agendador de tarefas em Java
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém já testou o novo COSMIC Desktop? O que achou? (5)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (2)









