Fatorial while "help".[Resolvido]

Boa tarde Pessoal!
Não consigo fazer um fatorial usando while, é erro de lógica aparece o mesmo nª digitado, não o fatorial, me ajudem, obrigado.

import javax.swing.JOptionPane;


public class FatorialWhile {


	public static void main(String[] args) {
		
		int intcontador=1,fat,valor;
	
		
		
		valor=Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero","entrada",JOptionPane.INFORMATION_MESSAGE));
		fat=valor;
		while(intcontador<valor){	
			fat=fat*intcontador;
			JOptionPane.showMessageDialog(null,"o fatorial de "+valor+ " é :" + fat,"Resultado",JOptionPane.INFORMATION_MESSAGE);
			
			break;
			
		}		
				
		
		
	}

}

Tenta isso:

[code] int intcontador = 1, fat, valor;

	valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
	fat = 1;
	String result = "o fatorial de " + valor + " é :";
	while (intcontador <= valor) {
		fat = fat + (fat * (valor - 1) );
		valor--;
	}
	JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);[/code]

[quote=marcelo.bellissimo]Tenta isso:

[code] int intcontador = 1, fat, valor;

	valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
	fat = 1;
	String result = "o fatorial de " + valor + " é :";
	while (intcontador <= valor) {
		fat = fat + (fat * (valor - 1) );
		valor--;
	}
	JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);[/code][/quote]

[quote=cel?2008][quote=marcelo.bellissimo]Tenta isso:

[code] int intcontador = 1, fat, valor;

	valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
	fat = 1;
	String result = "o fatorial de " + valor + " é :";
	while (intcontador <= valor) {
		fat = fat + (fat * (valor - 1) );
		valor--;
	}
	JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);[/code][/quote]

[quote]
Valeu xara!
É isso mesmo que eu queria, seria pedir demais pra vc fazer o teste de mesa desse código, pra eu entender melhor, "Se possível é claro", pois tentei fazer e não entendi muito bem.
Sem mais Obrigado

Marcelo.
[/quote][/quote]

Bem, não tem muito segredo, é só seguir a teoria do Fatorial… o Fatorial de N é o produto de todos os números inteiros, positivos, menores ou igual á N… isso implica que o Fatorial de 0 = 1 … aliás, fatorial se representa por !

Passos:

  • Pegar um valor do usuário(deve-se verificar se esse valor é positivo, pois não existe fatorial de número negativo), exemplo 3;
valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", OptionPane.INFORMATION_MESSAGE));
  • O fatorial de 3, por definição, é o fatorial de 2 (3-1) multiplicado por 3: n! = n * (n-1)! ;
  • Repetir isso até atingir 1;

while (intcontador <= valor) { // valor = 3 fat = fat + (fat * (valor - 1) ); // fat => 1 + (1 x (3-1) ) => 1 + (1 x (2) ) => 1 + 2 => 3 valor--; // valor = 2 fat = fat + (fat * (valor - 1) ); // fat => 3 + (3 x (2-1) ) => 3 + (3 x (1) ) => 3 + 3 => 6 valor--; // valor = 1 fat = fat + (fat * (valor - 1) ); // fat => 6 + (6 x (1-1) ) => 6 + (6 x (0) ) => 6 + 0 => 6 valor--; // fim do while }

Não sei se ficou bom meu teste de mesa, seria mais facil fazer num papel! :smiley:

[quote=marcelo.bellissimo][quote=cel?2008][quote=marcelo.bellissimo]Tenta isso:

[code] int intcontador = 1, fat, valor;

	valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", JOptionPane.INFORMATION_MESSAGE));
	fat = 1;
	String result = "o fatorial de " + valor + " é :";
	while (intcontador <= valor) {
		fat = fat + (fat * (valor - 1) );
		valor--;
	}
	JOptionPane.showMessageDialog(null, result + fat, "Resultado", JOptionPane.INFORMATION_MESSAGE);[/code][/quote]

[quote]
Valeu xara!
É isso mesmo que eu queria, seria pedir demais pra vc fazer o teste de mesa desse código, pra eu entender melhor, "Se possível é claro", pois tentei fazer e não entendi muito bem.
Sem mais Obrigado

Marcelo.
[/quote][/quote]

Bem, não tem muito segredo, é só seguir a teoria do Fatorial… o Fatorial de N é o produto de todos os números inteiros, positivos, menores ou igual á N… isso implica que o Fatorial de 0 = 1 … aliás, fatorial se representa por !

Passos:

  • Pegar um valor do usuário(deve-se verificar se esse valor é positivo, pois não existe fatorial de número negativo), exemplo 3;
valor = Integer.parseInt(JOptionPane.showInputDialog(null,"Entre numero", "entrada", OptionPane.INFORMATION_MESSAGE));
  • O fatorial de 3, por definição, é o fatorial de 2 (3-1) multiplicado por 3: n! = n * (n-1)! ;
  • Repetir isso até atingir 1;

while (intcontador <= valor) { // valor = 3 fat = fat + (fat * (valor - 1) ); // fat => 1 + (1 x (3-1) ) => 1 + (1 x (2) ) => 1 + 2 => 3 valor--; // valor = 2 fat = fat + (fat * (valor - 1) ); // fat => 3 + (3 x (2-1) ) => 3 + (3 x (1) ) => 3 + 3 => 6 valor--; // valor = 1 fat = fat + (fat * (valor - 1) ); // fat => 6 + (6 x (1-1) ) => 6 + (6 x (0) ) => 6 + 0 => 6 valor--; // fim do while }

Não sei se ficou bom meu teste de mesa, seria mais facil fazer num papel! :smiley: [/quote]

Boa tarde cel?2008,

Segue abaixa 2 exemplos simples de fatorial:

public class Principal {
	public static void main(String[] args) {
		System.out.println(calculaFatorial(5));
	}

	private static int calculaFatorial(int valor){
		int result = valor;
		while (valor > 1) {
			result *= (valor-1);
			valor--;
		}
		
//		Segunda Maneira
//		int result = 0;
//		for (int i = valor ; i > 0 ; i-- ) {
//			if (i == valor) result = valor;
//			else result *= i;
//		}
		return result;
	}
}

Att,

Guilherme Bernert