Итак, я пытаюсь разобраться с принципом «разделяй и властвуй» и множественными рекурсивными вызовами в одном методе. Все идет хорошо, но у меня проблема с выводом метода, который я пишу.
Цель метода - вернуть сумму всех пар последовательных чисел в массиве. Я на 95%, но не получаю ожидаемого результата и целую вечность бью себя по столу, пытаясь понять, почему.
Массив:
int[] array = { 11, 6, 87, 32, 15, 5, 9, 21 };
и метод:
public int consecutivePairsSum_DivideAndConquer(int start, int end, int[] array) {
int leftSum;
int rightSum;
int middle = (start + end) / 2;
if (start == middle) {
return array[middle];
} else {
leftSum = array[start] + array[start + 1];
leftSum += consecutivePairsSum_DivideAndConquer(start, middle, array);
}
if (middle == end) {
return array[end];
} else {
rightSum = array[middle] + array[middle+1];
rightSum += consecutivePairsSum_DivideAndConquer(middle+1, end, array);
}
return leftSum + rightSum;
}
Вот мой вызов метода:
System.out.println(rF.consecutivePairsSum_DivideAndConquer(0, array.length-1, array));
Я думаю, что это как-то связано с тем, как я разбил массив, но никакие эксперименты не дают мне правильного вывода.
Ожидаемый результат: 340
Фактический объем производства: 330
Любые предложения приветствуются, это сводит меня с ума! : Р
ps Любые полезные ссылки на то, где я могу найти солидный онлайн-учебник / хорошую книгу о рекурсии, также были бы хороши (если это входит в сферу компетенции SO, понимая, что это не является прямой помощью при программировании)