/
SofiMut
/
hobbyRecursive2
Обзор
Документация
Войти
/
SofiMut
/
hobbyRecursive2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Main.java
81 строка
2 KB
Софья Степанова
upload files
14 авг 2025, 06:31
14 авг 2025, 06:31
f4fe5bb
Код
Авторство
О чём код?
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { compare(1); compare(2); compare(5); compare(15); } public static void compare(int day) { System.out.println("=== Day " + day + " ==="); int[] startNumbers = {21, 1, 20, 23}; int iterative = chooseHobbyIterative(startNumbers, day); int recursive = chooseHobbyRecursive(startNumbers, day, new int[day]); System.out.println("Iterative = " + iterative + " | Recursive = " + recursive); System.out.println(); } public static int chooseHobbyIterative(int[] startNumbers, int day) { List<Integer> numbers = new ArrayList<>(); numbers.add(startNumbers[0]); numbers.add(startNumbers[1]); numbers.add(startNumbers[2]); numbers.add(startNumbers[3]); for (int d = 0; d < day; d++) { int index = d + 4; // индексы дней в массиве сдвинуты на 4 int prev = numbers.get(index - 1); // предыдущее значение int prePrePrev = numbers.get(index - 3); // пре-предыдущее значение numbers.add((prev * prePrePrev) % 10 + 1); } return numbers.get(numbers.size() - 1); } public static int chooseHobbyRecursive(int[] startNumbers, int day, int[] memory) { int day1 = (startNumbers[startNumbers.length - 1] * startNumbers[startNumbers.length - 3] % 10 + 1); if (day == 1) { return day1; } int day2 = (day1 * startNumbers[startNumbers.length - 2] * startNumbers[startNumbers.length - 3] % 10 + 1); if (day == 2) { return day2; } int day3 = (day2 * startNumbers[startNumbers.length - 1] * startNumbers[startNumbers.length - 3] % 10 + 1); if (day == 3) { return day3; } int day4 = (day3 * day1) % 10 + 1; if (day == 4) { return day4; } memory[0] = day1; memory[1] = day2; memory[2] = day3; memory[3] = day4; if (memory[day - 1] != 0) { return memory[day - 1]; } int prev = chooseHobbyRecursive(startNumbers, day - 1, memory); int prePrevPrev = chooseHobbyRecursive(startNumbers, day - 3, memory); return (prev * prePrevPrev) % 10 + 1; } }