Нужна помощь по возвращению индексов макс последовательности алгоритма
У меня есть следующий алгоритм, который возвращает сумму наибольшей подпоследовательности в массиве. Наибольшая сумма находится либо в левой половине, либо в правой части, либо в середине массива (разделяй и властвуй)... Я могу вернуть индексы, если она находится в середине. Но если подпоследовательность находится в левой или правой половине массива, я не могу понять, что они будут (рекурсия немного сбивает с толку). Я могу определить переменные индекса вне метода, если это необходимо. Вот метод:
private static int maxSumRec( int [ ] a, int left, int right )
{
int maxLeftBorderSum = 0, maxRightBorderSum = 0;
int leftBorderSum = 0, rightBorderSum = 0;
int center = ( left + right ) / 2;
if( left == right ) // Base case
return a[ left ] > 0 ? a[ left ] : 0;
int maxLeftSum = maxSumRec( a, left, center );
int maxRightSum = maxSumRec( a, center + 1, right );
for( int i = center; i >= left; i-- )
{
leftBorderSum += a[ i ];
if( leftBorderSum > maxLeftBorderSum )
maxLeftBorderSum = leftBorderSum;
}
for( int i = center + 1; i <= right; i++ )
{
rightBorderSum += a[ i ];
if( rightBorderSum > maxRightBorderSum )
maxRightBorderSum = rightBorderSum;
}
return max3( maxLeftSum, maxRightSum,
maxLeftBorderSum + maxRightBorderSum );
}