Fatorial Recursivo em Java
Publicado por Mariana Ribeiro Mendes (última atualização em 15/09/2012)
[ Hits: 34.242 ]
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) + ".");
    }
}
Caixa eletrônico usando a classe Hashtable
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? (12)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)









