Ajuda, codigo sobre fatoriais, o que pode estar errado ? [RESOLVIDO]
5 respostas
userguj
Ae galera, fiz esse codigo ai, mais não está retornando os valores corretos.
E um calculo de fatoriais de 1 à 10.
Segue o codigo:
// Programa Calcula o fatorial de um número.publicclassExercicio4{publicstaticvoidmain(Stringargs[]){intn;intsbtr=0;intfatorial;intcontador;intresult=1;for(n=1,fatorial=1;n<=10;n++){if(n==1)// se o n for igual a 1, o fatorial é 1.{System.out.println(n+"! = "+fatorial);}if(n>=2){for(contador=n-1;contador>=1;contador--)// tendo n >= 2, multiplicar n por todos o seus antecessores até 1.{fatorial=n*(contador);}System.out.println(n+"! = "+fatorial);}}}}
Ela está retornando os seguintes resultados:
1! = 1
2! = 2
3! = 3
...
10! = 10
Gostaria de uma dica, pra ajusta-lo, é conseguir os valores corretos.
Fala Brother, tu pode usar recursividade tb pra resolver o problema do fatorial!!!
Segue esboço!
publicintfatorial(intx){if(x==0||x==1){return1;//fatorial d 0 e de 1}else{returnx*fatorial(x-1);}}
Repara não to saindo pra jogar volei escrevi orascunho ai meio rapido…
qq coisa soh gritar
[]S!
userguj
Vlw d+ rapeiz
abraço.
Tiberio
Eu sei que você viu os outros códigos e que já resolveu seu problema, mas quanto ao seu programa inicial, o problema está em…
Fatorial = n*(contador);
Se voce perceber, o loop será feito, dessa maneira…
Tomemos o 4 como exemplo…
4 * 3 = 12 Fatorial recebera 12
4 * 2 = 8 Fatorial recebera 8
4 * 1 = 4 Fatorial recebera 4
Acabará o loop, e imprimirá o fatorial, que é 4 !
Ou seja, qualquer que seja N diferente de 1, sempre imprimirá ele * 1, que é a ultima tarefa do loop.
Abraços.
userguj
Ae Galera… aperfeçoei o codigo aqui, e ta dando certo agora.
Ae segue o codigo abaixo, pode ser util para alguem.
Vlws…
public class Fatorial1_10
{
public static void main (String args[])
{
int n;
int fatorial;
int sbtr;
int contador;
for (n = 1, fatorial = 1; n <= 10; n++)
{
if (n == 1) // se n for igual a 1, o fatorial é = 1.
{
System.out.println (fatorial);
}
for (contador = n-1, sbtr = n; contador != 0; contador--) // tendo n >= 2, multiplicar n por todos o seus antecessores até 1.
{
sbtr = sbtr*contador;
}
System.out.println(n + "! = " + sbtr);
}
}
}