Написать метод, который вычисляет факториал — произведение всех чисел от 1 до введенного числа включая его.
Пример вычислений: 4! = factorial(4) = 1*2*3*4
Пример вывода: 24
1. Ввести с консоли число меньше либо равно 150.
2. Реализовать функцию factorial.
3. Если введенное число меньше 0, то вывести 0.
0! = 1
Требования:
1. Программа должна считывать данные с клавиатуры.
2. Программа должна выводить на экран факториал введенного числа.
3. Метод factorial должен возвращать строковое представление факториала числа переданного ему в качестве параметра.
4. Метод factorial должен принимать один параметр типа int.
1. не понятно что такое "0! = 1" . Я решил, что если ввести ноль, то программа должна вывести единицу.
2. не понятно что произойдёт если ввести число больше 150.
2.1. при этом вроде как сначала нужно убедиться что число <=150, а потом уже запускать метод factorial. Но в задаче прямо указано, что код следует писать внутри метода factorial. Поэтому проверку на 150 сделал уже в методе. В общем условие не очень понятное.
3. Посмотрел как она решается другими. Задача проходит валидацию без проверки на <=150 и с применением BigInteger. Как это понимать?
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int input = Integer.parseInt(reader.readLine());
reader.close();
System.out.println(factorial(input));
}
public static String factorial(int n) {
long result = 1;
if (n<=150) {
if ( n < 0) return "0";
else if (n == 0 ) return "1";
else {
for (int i = 1; i <= n; ++i)
result *= i;
}
return String.valueOf(result);
}
return "";
}