Получает одно целое число и возвращает факториал переданного числа

#java #package #factorial

#java #пакет #факториал

Вопрос:

Создание двух отдельных пакетов mathematics и Application. С классом под названием MathHelper и приложением в любом из них. Мне нужно добавить статический метод к MathHelper.java класс с именем factorial (int), который получает одно целое число и возвращает факториал переданного числа. В вызываемое приложение добавляется основной метод, который вызывает Mathhelper.factorial. Это код, который у меня есть на данный момент…

 public class Application {

    public static void main(String[]args) {

       System.out.println(MathHelper.doubleInt((9)));   
    }
}
  

 public class MathHelper {
    public static void main(String[]args) {
    }
    public static int fact(int factNum) {
        if (factNum==1) {   
            return 1;
        }
        else {
            return factNum   (fact(factNum - 1));
        }
    }
}
  

Комментарии:

1. Я думаю, что это правильная общая идея, но должна быть * — факториал означает умножение целого ряда чисел вместе, а не их сложение.

Ответ №1:

Вы можете вычислить факториал с помощью:

циклы:

 public long fact(int factNum) {
    long fact = 1;
    for (int iteration = 2; iteration <= factNum; iteration  ) {
        fact = fact * iteration;
    }
    return fact;
}
  

Стримы:

 public long fact(int factNum) {
    return LongStream.rangeClosed(1, factNum)
            .reduce(1, (long fact, long iteration) -> fact * iteration);
}
  

рекурсия:

 public long fact(int factNum) {
    if (factNum <= 2) {
        return factNum;
    }
    return factNum * fact(factNum - 1);
}