Я пытаюсь выполнить линейный поиск по массиву, где он находит последнее вхождение цели. Я застрял, потому что мой поиск обнаруживает только первое появление цели не последним.Linear Search Recursive Last Occurrence
/** Recursive linear search that finds last occurrence of a target in the array not the first
*
* @param items The array
* @param target the item being searched for
* @param cur current index
* @param currentLength The current length of the array
* @return The position of the last occurrence
*/
public static int lineSearchLast(Object[] items, Object target, int cur, int currentLength){
if(currentLength == items.length+1)
return -1;
else if (target.equals(items[cur])&& cur < currentLength)
return cur;
else
return lineSearchLast(items, target, cur +1, currentLength);
}
public static void main (String[] args){
Integer[] numbers5 = {1,2,4,4,4};
int myResult = lineSearchLast(numbers5, 4, 0, 5);
System.out.println(myResult);
Нужно ли быть рекурсивным? Вы можете упростить вещи, просто перебирая список. –
Я рекомендую вам возвратить 'max (cur, lineSearchLast (items, target, cur +1, currentLength);'. Там 'Math # max', но он возвращает' double', а не 'int', поэтому, возможно, вы хотите/необходимо создать или адаптировать этот метод. –
@DanJMiller или путем перемещения списка от последнего элемента до первого и возврата первого вхождения. –