Рекурсия Java: проверьте, является ли число факториалом

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

Метод 1: рекурсивный подход

public class FactorialChecker {
    public static boolean isFactorial(int number, int potentialFactor) {
        if (number == 1) {
            return true;
        }
        if (number % potentialFactor == 0) {
            return isFactorial(number / potentialFactor, potentialFactor + 1);
        }
        return false;
    }
    public static void main(String[] args) {
        int number = 120;
        if (isFactorial(number, 2)) {
            System.out.println(number + " is a factorial number.");
        } else {
            System.out.println(number + " is not a factorial number.");
        }
    }
}

Метод 2: итеративный подход

public class FactorialChecker {
    public static boolean isFactorial(int number) {
        int factorial = 1;
        int i = 1;
        while (factorial < number) {
            factorial *= i;
            i++;
        }
        return factorial == number;
    }
    public static void main(String[] args) {
        int number = 120;
        if (isFactorial(number)) {
            System.out.println(number + " is a factorial number.");
        } else {
            System.out.println(number + " is not a factorial number.");
        }
    }
}

В первом методе мы используем рекурсивный подход, чтобы проверить, является ли данное число факториалом. Метод isFactoriпринимает два параметра: number(число, которое нужно проверить) и potentialFactor(коэффициент, который нужно проверить). Делим число на потенциальный множитель до тех пор, пока число не станет 1. Если число станет 1, это означает, что все множители найдены и число является факториалом. Если число делится на потенциальный коэффициент, мы рекурсивно вызываем метод isFactoriс обновленным числом и следующим потенциальным коэффициентом. Если ни одно из условий не выполнено, число не является факториалом.

Во втором методе мы используем итеративный подход. Мы начинаем с факториала 1 и увеличиваем счетчик iдо тех пор, пока факториал не станет меньше заданного числа. Если факториал становится равным числу, это означает, что число является факториалом. В противном случае это не факториал.