Boa noite!! Sou novo aqui no Forum e estou aprendendo Java Também… Estou na minha segunda aula de java e o professor pediu para calcular um fatorial de algum nº n. eu fiz da seguinte maneira só que está acontecendo um erro de calculo.
public class Fatorial {
public static void main (String [] args){
int i, Fat = 4;
for (i=1;i<=Fat;i+1){
Fat=Fat*i;
}System.out.print(Fat);
}
}
Por favor se alguem souber alguma maneira simples de calcular o Fatorial, e que possa me explicar, serei muito grato!!!
Crie uma outra variável com o valor igual 1.
Então faça enquanto essa variável (resultado) for menor que Fat, resultado = resultado * i.
Imprima resultado
Olá thiago, eu tb sou novo no java, como também no mundo da programação. E que as vezes por mais que pesquizamos , há conceitos que não adquirimos a primeira. O forum decerto é meio que ajuda muito … e neste caso muito activo.
[quote=Thiago_Java08]Sr. Carnevalli se não for pedir muito poderia me ensinar o método recursivo???
Resaltando que tem que ser bem simples pois estou começando agora!!![/quote]
O método recursivo é esse que o el_loko postou em seguida ao que eu postei.
Concordo que o método recursivo seja o mais ideal deste caso.
Pra ficar mais claro pra vc, sobre oq é recursividade, pensa na seguinte questão: o fatorial de um numero X é o fatorial do número anterior a ele (X-1) multiplicado por ele mesmo.
FATORIAL DE X = X * FATORIAL DE X-1
Pensando desta forma, analise o seguinte código e vc vai perceber a importância e o siginificado da recursividade (neste caso):
public class FatorialMain {
public static void main(String[] args) {
String numero = JOptionPane.showInputDialog("Calcular fatorial do numero:" );
int num = Integer.parseInt(numero);
JOptionPane.showMessageDialog(null,"Fatorial de " + num + " é " + fatorialDoNumero(num));
}
private static long fatorialDoNumero(int num) {
int anterior = num-1;
long fatorialDesteNumero = 0;
if (num <= 1) return 1;
else fatorialDesteNumero = num * fatorialDoNumero(anterior); // Aqui está a recursividade no programa. O método "fatorialDoNumero" é chamado várias vezes dentro dele mesmo.
return fatorialDesteNumero;
}
}
Note que quem escreve um código assim, não precisa ficar calculando uma lógica maluca pra retornar o fatorial. É como se o programador "conversasse" com o código.
A recursividade ajuda mto neste caso.
[code]
int fat = 1;
int valor = 5; //ou qualquer outro valor que queira calcular;
for( int i = 2; i <= valor; i++ )
{
fat *= i;
}
System.out.println( "O fatorial de " + valor + " é igual a " + fat );
}[/code]
Dá pra criar um método recursivo também, se quiser escrevo aqui…
abraço,[/quote]
Olá,
Eu estou começando a aprender JAVA e gostaria que me explicasse o que essa expressão “fat*=i” faz? Eu já entendi que ela calcula o fatoria dos numeros… mas como isso eh feito?
Alguns dos meus resultados estão danto negativos eu não sei o porque, alguem pode me da uma dica do que estou errando?
public class ProgramaFatorial {
public static void main (String []args){
for (int i = 1, fatorial = 1; i <= 10; i++) {
fatorial *= -i;
System.out.println("fatorial de " + i + " eh: " + fatorial);
}
}
}
fatorial de 1 eh: -1
fatorial de 2 eh: 2
fatorial de 3 eh: -6
fatorial de 4 eh: 24
fatorial de 5 eh: -120
fatorial de 6 eh: 720
fatorial de 7 eh: -5040
fatorial de 8 eh: 40320
fatorial de 9 eh: -362880
fatorial de 10 eh: 3628800
Boa Tarde pessoal! Não to conseguindo entender direito sobre recursividade e meu professor me pediu p fazer um método recursivo para cálculo do exponencial de um número.
Se alguém tiver alguma ideia e puder me ajudar! Desde já, obrigada.
fat *= i equivale a fat = fat * i. É apenas uma forma “abreviada” de fazer isso (não lembro se, em tempo de execução faz diferença, mas se fizer, deve ser mínima).