Я пытаюсь изучить алгоритмы разделения и покорения, и я придумал то, что, как я думал, будет работать с использованием java. Предполагается, что алгоритм должен взять массив размера n, который является базой 2. Он должен разделить массив на базовый случай 4, а затем добавить их для индексов вместе. Затем он добавит все вместе, чтобы найти сумму всего массива. Вот что я сделал до сих пор в java и моей ошибке. Я, по крайней мере, на правильном пути для алгоритмов разделения и покорения?Learning Divide and Conquer Algorithms
Исключение возникает:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at getSum.sumArray(getSum.java:17)
at getSum.sumArray(getSum.java:21)
at getSum.main(getSum.java:7)
Вот код:
public class getSum {
static int sum = 0;
public static void main(String[] args) {
int[] numbers = {2,2,2,2,2,2,2,2};
int amount = 0;
amount = sumArray(0,numbers.length,numbers);
System.out.print(amount);
}
public static int sumArray(int first, int last, int[] A){
int index = last - first;
if(index == 1){
return sum;
}else if(index <= 4 && index > 1){
for(int i = first; first < last; i++){
sum += A[i];
}
return sum;
}
return (sumArray(first, last/2, A) + sumArray(last/2, A.length, A));
}
}
Вы здесь впервые? По крайней мере, отметьте линию, которая бросает исключение. – SJuan76
'sum' должен быть частью метода' sumArray' .. – Anirudha