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.
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
C
Carnevalli
Simples:
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 );
}
Dá pra criar um método recursivo também, se quiser escrevo aqui...
abraço,
el_loko
public class ExemploFatorial {
public static void main (String args[]) {
for(long i=0; i<=10;i++) {
System.out.println(i + "! = " + fatorial(i));
}
}
public static long fatorial(long num) {
if (num <=1 ) return 1;
else return num * fatorial(num - 1);
}
}
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!!!
beginer
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.
n=Integer.parseInt(JOptionPane.showInputDialog("Qual número?"));if(numero<0){Integer.parseInt(JOptionPane.showMessageDialog(null,"Manê, não há fatorial de números negativos"));}else{while(n>1){fat*=n;n--;}JOptionPane.showMessageDialog(null,"Resposta"+fat);}}
}
leandronsp1 like
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.
FATORIALDEX=X*FATORIALDEX-1
Pensando desta forma, analise o seguinte código e vc vai perceber a importância e o siginificado da recursividade (neste caso):
publicclassFatorialMain{publicstaticvoidmain(String[]args){Stringnumero=JOptionPane.showInputDialog("Calcular fatorial do numero:");intnum=Integer.parseInt(numero);JOptionPane.showMessageDialog(null,"Fatorial de "+num+" é "+fatorialDoNumero(num));}privatestaticlongfatorialDoNumero(intnum){intanterior=num-1;longfatorialDesteNumero=0;if(num<=1)return1;elsefatorialDesteNumero=num*fatorialDoNumero(anterior);// Aqui está a recursividade no programa. O método "fatorialDoNumero" é chamado várias vezes dentro dele mesmo.returnfatorialDesteNumero;}}
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.
[]´s
E
Estev1 like
Carnevalli:
Simples:
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 );
}
Dá pra criar um método recursivo também, se quiser escrevo aqui...
abraço,
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?
FabioNoth
Pessoal consegui resolver o meu problema mais estou com uma dúvida.
Que está me mantando…
O que faz o
fat*=i;
Na verdade eu estou começando… e se alguma pessoal puder me explicar… ou comentar o código acima…
ira ajudar mesmo…
Obrigado
Rafael_da_Silva_Ferr1 like
publicclassExercicio4{publicstaticvoidmain(Stringargs[]){intfatorial=1;for(intinicio=1;inicio<=10;inicio++){fatorial=fatorial*inicio;System.out.println("O fatorial de "+inicio+" é: "+fatorial);
}}
}
Agnaldopps
Olá
Pessoal estou com um dificuldade.
Alguns dos meus resultados estão danto negativos eu não sei o porque, alguem pode me da uma dica do que estou errando?
publicclassProgramaFatorial{publicstaticvoidmain(String[]args){for(inti=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
drigo.angelo
Olá, Bem vindo ao fórum
Quando for postar seu código fonte, por favor utilize a formatação do fórum, este link explica como faze-lo caso tenha dúvidas
Quanto a sua dúvida, está dando resultados negativos porque você está multiplicando por menos i
Troque fatorial *= -i; por fatorial *= i;
Agnaldopps
Primeiramente desculpe por post com formato inadequado.
Noss muito obrigado eu não tinha nem visto foi no automatico kkk.
kk esse errinho que explode fuguetes kkk
V
Veronica.s
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.
WellingtonRamos
Você entendeu o que você errou?
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).