Não consigo identificar o erro para saber onde estou errando…
Obrigado
import javax.swing.*;
public class Fatorial{
//metodo para calculo fatorial
public static int fator(int f , int i , int num){
while (i++ < num){
f = f * i;
return f;
}
}
//metodo principal
public static void main(String args[]){
//Declaração de Variáveis
int num;
//Entrada de Dados do Usuário
num = Integer.parseInt(JOptionPane.showInputDialog("Digite um número"));
//Exibição dos dados
JOptionPane.showMessageDialog(null, fator(num));
}
}
Vc pode fazer de forma recursiva como mostrado logo a cima, mas se quer fazer interativo seu método deveria ser assim:
public int fatorial(int n)
{
int f = 1;
for(int i = 1; i<=n; i++)
f *= i;
return f;
}
ou com while:
public fatorial(int n)
{
int i = 1; f = 1;
while(i<=n)
f *= i++; // primeiro ele efetua a peração de atribuição e depois realiza a operação de incremento
return f;
}
Tem outra coisa tb. Para vc usar o metodo fator vc deve instanciar no método main um objeto da classe Fatorial e atraves dele acessar este.
Esqueci de falar…
A forma recursiva pode ser mais custosa em termos de tempo de execução, assim para calculos de um fatorial muito grande seria melhor da forma interativa.
Além tb dos valores estourarem a capacidade de um inteiro rapidamente… assim vc pode usar um double para o resultado.