Для чего-то, над чем я работаю, мне нужно иметь целочисленный массив и получить два индекса от пользователя. Один из них является отправной точкой в массиве, а другой - конечной точкой. С этими двумя точками я должен найти максимальное значение в массиве, рекурсивно. Код, который у меня сейчас есть, работает, но я чувствую, что есть вещи, которые могли бы сделать его более свободным, и, возможно, даже я мог бы сделать что-то другое, чтобы избавиться от некоторого бесполезного кода. Я опубликую свой код ниже.
import java.util.Scanner;
public class RecursiveProblem {
public static void main(String args[]) {
int start, end, size, max;
Scanner scan = new Scanner(System.in);
System.out.println("How many numbers would you like to enter in total?");
size = scan.nextInt();
int[] myArray = new int[size];
System.out.println("Please enter the specified starting index.");
start = scan.nextInt() - 1;
System.out.println("Please enter the specified ending index.");
end = scan.nextInt() - 1;
System.out.println("Please enter " + size + " integers seperated by a space, or press "
+ "enter after each number: ");
for(int i = 0; i < myArray.length; i++) {
myArray[i] = scan.nextInt();
}
scan.close();
max = myArray[start];
max = findMax(myArray, start, end, max);
System.out.println("The max of your array between the indices of " + (start + 1) +
"-" + (end + 1) + " is..." + max);
}
public static int findMax(int[] myArray, int start, int end, int max) {
if(start < end) {
if(myArray[start + 1] > max) {
start++;
max = myArray[start];
return findMax(myArray, start, end, max);
}
else {
start++;
return findMax(myArray, start, end, max);
}
}
return max;
}
}
Одна вещь, в которой я в основном смущен, но не единственный вопрос, который у меня возникает, - всякий раз, когда я решаю поместить команду start ++ в вызов функции для findMax (myArray, start ++, end, max) <- (вроде так), это закончится бесконечной рекурсией. Я не понимаю, почему это вызывает бесконечную рекурсию, но то, как я это сделал, - нет. Заранее благодарю за помощь в очистке кода и за помощь в моем вопросе! </p>