I'm starting to lose hope and sanity... I'm learning Java code and trying to write a program for choosing hobby, but it must be done by two methods and mine give different numbers... I don't know where to look for mistake or how to make it right. Please help!
public static int chooseHobbyRecursive(int[] startNumbers, int day) {
if (day == 0){
return startNumbers [0];
} else if (day == 1) {
return startNumbers [1];
} else if (day == 2) {
return startNumbers [2];
} else if (day == 3) {
return startNumbers [3];
} else {
int prev = chooseHobbyRecursive(startNumbers, day - 1);
int prevPrePrev = chooseHobbyRecursive(startNumbers, day - 3);
return (prev * prevPrePrev) % 10 + 1;
}
}
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 prePrePrev = numbers.get(index - 3);
numbers.add((prev * prePrePrev) % 10 + 1);
}
return numbers.get(numbers.size() - 1);
}
}
I've been trying to rewrite the code but it usually either dies with ArrayIndexOutOfBoundsException or have different numbers
Output:
=== Day 1 ===
Iterative = 4 | Recursive = 1
=== Day 2 ===
Iterative = 1 | Recursive = 20
=== Day 5 ===
Iterative = 8 | Recursive = 1
=== Day 15 ===
Iterative = 2 | Recursive = 3
UPD: The task states: At the very beginning student writes two numbers: the day and month of his birth, then two numbers - two halves of the current year. For example, if he was born on January 21 and the year is 2023, the first four numbers are 21 1 20 23. Each next number is obtained by the rule: the previous day and two days before it are taken, multiplied, the remainder of the division by 10 is taken, then 1 is added, so that there is numbering from one. Each such number will be from 1 to 10 and will be the number of the hobby he will be doing that day.
I was given the iterative method and my job to create a recursive one, but I don't understand how (I figured how to make a recursive part), but somehow have no idea how to make the method chooseHobbyRecursive right.
I would appreciate the explanation or/and the parts where I'm wrong or any advice really. Thanks!