/
KuznetcovVS
/
HWRecursi
Обзор
Документация
Войти
/
KuznetcovVS
/
HWRecursi
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Main.java
77 строк
2 KB
KuznetcovVS
recursia
18 май 2025, 23:00
18 май 2025, 23:00
a72f748
Код
Авторство
О чём код?
import java.util.ArrayList; import java.util.List; public class Main { private static int[] memory; 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); System.out.println("Iterative = " + iterative + " | Recursive = " + recursive); System.out.println(); } public static int chooseHobbyRecursive(int[] startNumbers, int day) { if (memory == null || memory.length <= day) { memory = new int[day + 1]; } if (memory[day] != 0) { return memory[day]; } if (day == 0) { memory[0] = startNumbers[0]; return memory[0]; } else if (day == 1) { memory[1] = startNumbers[1]; return memory[1]; } else if (day == 2) { memory[2] = startNumbers[2]; return memory[2]; } else if (day == 3) { memory[3] = startNumbers[3]; return memory[3]; } int prev = chooseHobbyRecursive(startNumbers, day - 1); int prePrePrev = chooseHobbyRecursive(startNumbers, day - 3); int result = (prev * prePrePrev) % 10 + 1; memory[day] = result; return result; } 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; int prev = numbers.get(index - 1); int prePre = numbers.get(index - 3); int nextValue = (prev * prePre) % 10 + 1; numbers.add(nextValue); } return numbers.get(day + 3); } }