Fatorial Recursivo em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 15/09/2012)
[ Hits: 33.747 ]
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) + "."); } }
Exemplo de POO usando conceitos de calorimetria em Java
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (2)
Enzo quer programar mas não faz código pra não bugar (12)
Erro de Montagem SSD Nvme (12)
WebScrapping através de screenshot devido a bloqueios de Shadow DOM (1)