Задача:
Разработайте программу, которая считывает целое число и выводит его факториал с использованием цикла и рекурсии. Java.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Создание класса
Factorial
с методомmain
. -
Инициализация объекта
Scanner
для ввода данных. -
Запрос у пользователя ввода числа и сохранение его в переменную
number
. -
Вызов метода
factorialLoop(number)
для вычисления факториала с помощью цикла:- Инициализация переменной
result
значением 1. - Использование цикла
for
от 1 доn
:- Умножение
result
на текущее значениеi
.
- Умножение
- Возврат результата.
- Инициализация переменной
-
Вызов метода
factorialRecursion(number)
для вычисления факториала с помощью рекурсии:- Проверка базового случая: если
n
равно 0 или 1, возврат 1. - Рекурсивный вызов: возврат
n * factorialRecursion(n - 1)
.
- Проверка базового случая: если
-
Вывод результатов вычисления факториала обоими методами.
-
Закрытие объекта
Scanner
.
Код программы на языке Java:
Код Java
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = scanner.nextInt();
System.out.println("Factorial using loop: " + factorialLoop(number));
System.out.println("Factorial using recursion: " + factorialRecursion(number));
scanner.close();
}
public static long factorialLoop(int n) {
long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
public static long factorialRecursion(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorialRecursion(n - 1);
}
}
Примеры входных данных и ожидаемых результатов:
Input: 5
Output:
Enter a number: 5
Factorial using loop: 120
Factorial using recursion: 120
Input: 0
Output:
Enter a number: 0
Factorial using loop: 1
Factorial using recursion: 1
Input: 10
Output:
Enter a number: 10
Factorial using loop: 3628800
Factorial using recursion: 3628800
Input: 1
Output:
Enter a number: 1
Factorial using loop: 1
Factorial using recursion: 1
Объяснение кода программы:
-
Импорт и объявление класса:
Импортируется класс Scanner для ввода данных. Объявляется публичный класс Factorial.import java.util.Scanner; public class Factorial {
-
Метод main:
Создается объект Scanner для чтения ввода. Пользователю предлагается ввести число, которое сохраняется в переменную number.public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter a number: "); int number = scanner.nextInt();
-
Вывод результатов:
Вызываются методы factorialLoop и factorialRecursion, их результаты выводятся на экран. Закрывается объект Scanner.System.out.println("Factorial using loop: " + factorialLoop(number)); System.out.println("Factorial using recursion: " + factorialRecursion(number)); scanner.close(); }
-
Метод factorialLoop:
Вычисляет факториал числа n с использованием цикла for. Результат накапливается в переменной result.public static long factorialLoop(int n) { long result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; }
-
Метод factorialRecursion:
Вычисляет факториал числа n рекурсивно. Базовый случай: если n равно 0 или 1, возвращается 1. Иначе, метод вызывает сам себя с аргументом n-1 и умножает результат на n.public static long factorialRecursion(int n) { if (n == 0 || n == 1) { return 1; } return n * factorialRecursion(n - 1); }