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.

public class Exercicio4
{
	public static void main (String args[])
	{
		int n;
		int sbtr = 0;
		int fatorial;
		int contador;
		int result = 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.

5 Respostas

Adolpho_Alves

Te conselharia o Use a Cabeça Java, é um livro muito bom e de boa didatica. Alem de tb trab lógica.

public static void main (String args[])     
	{     
		int n = 0, fatorial = 1;     

		while(n <= 10)     
		{     
			n++;   
			if (n > 1)     
			{     
				int aux = n;
				while (aux > 1)
				{
					fatorial = fatorial * (n*(aux-1));
					aux--;
				}
			}
			System.out.println (n + "! = " + fatorial);     
		}     
	}

vlw

Leonardo_Gloria

Fala Brother, tu pode usar recursividade tb pra resolver o problema do fatorial!!!

Segue esboço!

public int fatorial(int x){
  if(x == 0 || x == 1) {
       return 1; //fatorial d 0 e de 1
}else{
     return x * 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); } } }

Pratique Saudaveis Atitudes!

Criado 11 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 5
Participantes 4