Для вычисления факториала в Java можно использовать различные подходы. Вот несколько примеров:
- Первый способ:
public class Factorial {
public static void main(String[] args) {
int number = 5;
int factorial = 1;
for (int i = 1; i <= number; i++) {
factorial *= i;
}
System.out.println("Факториал числа " + number + " равен " + factorial);
}
}
Объяснение: В этом примере мы используем цикл for для умножения чисел от 1 до заданного числа number. Результат сохраняется в переменной factorial, которая инициализируется единицей. В конце программы выводится результат.
- Второй способ:
public class Factorial {
public static void main(String[] args) {
int number = 5;
int factorial = calculateFactorial(number);
System.out.println("Факториал числа " + number + " равен " + factorial);
}
public static int calculateFactorial(int number) {
if (number <= 1) {
return 1;
} else {
return number * calculateFactorial(number - 1);
}
}
}
Объяснение: В этом примере мы используем рекурсию для вычисления факториала числа. Метод calculateFactorial вызывает сам себя с уменьшенным на единицу аргументом, пока не достигнет базового случая (когда число меньше или равно 1). Затем результаты умножаются друг на друга и возвращаются обратно.
- Третий способ:
import java.util.stream.IntStream;
public class Factorial {
public static void main(String[] args) {
int number = 5;
int factorial = getFactorial(number);
System.out.println("Факториал числа " + number + " равен " + factorial);
}
public static int getFactorial(int number) {
return IntStream.rangeClosed(1, number)
.reduce(1, (x, y) -> x * y);
}
}
Объяснение: В этом примере мы используем IntStream и методы rangeClosed и reduce для вычисления факториала числа. Метод rangeClosed создает поток чисел от 1 до заданного числа number, а метод reduce умножает все числа в потоке между собой.
Если вам понравилось, буду признателен за подписку.