Как реализация factorial для моего [закрытого] калькулятора

Я делаю научный калькулятор. У этого калькулятора есть несколько математических функций для вошедшего числа. Например, в этом коде вычисляется квадратный корень:

if (e.getSource() == boton[11]) {
    if (!entrada.equals("") && !entrada.equals("0")) {
        double valor = Double.parseDouble(entrada);
        valor = Math.sqrt(valor);
        entrada = "" + valor;
    }
}

То, в чем я нуждаюсь, состоит в том, чтобы показывать результат вычисления factorial в следующем коде:

if( e.getSource() == boton[3]) {
    double valor = Double.parseDouble(entrada); 
    //qué hacer
}

Кто-то помог бы мне пожалуйста?

0
задан 29.03.2016, 02:11
4 ответа

Понимая, что у тебя есть один mГ©todo названный factorial, определенный следующего способа (или сходный):

private long factorial(long n) {
    /* código del método factorial */
}

ты Можешь реализовывать следующее:

if( e.getSource() == boton[3]) {
    long valor = Long.parseLong(entrada);
    entrada = String.valueOf(factorial(valor));
}
1
ответ дан 24.11.2019, 14:43
  • 1
    Я думаю, что он ту и #250; nica ответ на вопрос, так как пользователь упоминает о том, что у него есть проблема, чтобы призывать в м и # 233; совсем с bot и # 243; n, бойтесь, что он не покрывает ни в какой другой – jasilva 29.03.2016, 00:22

Помня, что factorial одного nГєmero - результат, который получается умножения выражения nГєmero на предыдущего и asГ - последовательно до того, чтобы прибывать к одному.

Мой ответ - используя возврат и стоимость возврата long, чтобы предотвращать избытки.

long factorial(int x) {
    return (x == 0) ?  1 : x * factorial(x-1);
}

Соединил interГ©s: Соединил

1
ответ дан 24.11.2019, 14:43
  • 1
    Я думаю, что это у проблемы было, призвав в метод с Вашей кнопки, не espeficicamente с методом factorial – jasilva 29.03.2016, 00:20

Внося песчаный гранит используя возврат:

public int factorial(int numero)
{
   int resultado;
   if(numero==0 || numero==1)
     return 1;

   resultado = factorial(numero-1) * numero;
   return resultado;
}
0
ответ дан 24.11.2019, 14:43
  • 1
    Я думаю, что это у проблемы было, призвав в метод с Вашей кнопки, не espeficicamente с методом factorial – jasilva 28.03.2016, 21:18

Может быть, это смогло помогать тебе:

    public int factorial(int numero){
      int factorial=1;
      for(int i=1,i<=numero;i++){
        factorial=i*factorial;
      }
      return factorial;
    }
0
ответ дан 24.11.2019, 14:43
  • 1
    Я думаю, что это у проблемы было, призвав в метод с Вашей кнопки, не espeficicamente с методом factorial – jasilva 29.03.2016, 00:20