В рекурсии у вас всегда должен быть базовый случай, который является точкой, где вы останавливаете рекурсию.На данный момент у вас есть рекурсивные случаи для каждого возможного результата:
if (number< 0){
findMinimum(stringArray,index1,index2++); zebobi="delta1";
}
else if (number> 0){
findMinimum(stringArray,index2,index2++);zebobi="delta2";
}
else if (number== 0){
findMinimum(stringArray,index1,index2++);zebobi="delta3";
}
(когда number
меньше, больше или равно нулю), поэтому ваш метод всегда будет вызывать сам себя, что бесконечнорекурсии.Вам нужно включить базовый регистр, который остановит рекурсию
Также, вероятно, было бы лучше сделать result
переменной, объявленной только в области действия findMinimum()
.Затем вам нужно изменить рекурсивные вызовы на result = findMinimum(...)
Базовый случай для этой проблемы - когда одна из переменных индекса выйдет за пределы.
public static String findMinimum(String[] stringArray, int index1, int index2)
{
String result = "";
if(index1 > stringArray.length || index2 > stringArray.length-1) {
return stringArray[index2-1];
}
int number = stringArray[index1].compareTo(stringArray[index2]);
if (number< 0){
result = findMinimum(stringArray,index1,index2+1); zebobi="delta1";
}
else if (number> 0){
result = findMinimum(stringArray,index2,index2+1);zebobi="delta2";
}
else if (number== 0){
result = findMinimum(stringArray,index1,index2+1);zebobi="delta3";
}
return result;
}
Если вы пытаетесь вызвать исключение и затем вернуться из блока исключений:
-Вы должны добавить блок try
(вы не можете иметьловить без попытки
Выход:
result : zeta