Найти в Дзене
DEBAGanov

Java 1714. Как сделать факториал в java

Для вычисления факториала в 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 умножает все числа в потоке между собой.

3019 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov

Если вам понравилось, буду признателен за подписку.