Fatorial Recursivo em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 15/09/2012)
[ Hits: 33.662 ]
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) + "."); } }
Calculadora de décimo terceiro
Começando a trabalhar com arrays
Vou voltar moderar conteúdos de Dicas e Artigos (0)
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Instalação Uefi com o instalador clássico do Mageia (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta