Dynamic Programming - Maximum Value Contiguous Subsequence.

JavaScript

function sum(array, start, end) {
    var total = 0;
    for (var i = start; i <= end; i++) {
        total += array[i];
    }
    return total;
}

var count = 0;

function maxSequence(array, start, end) {
    if (end - start == 0) {
        return array[start];
    }
    
    count++;
    
    return Math.max(sum(array, start, end),
                    maxSequence(array, start + 1, end),
                    maxSequence(array, start, end - 1));
}

var input = [2, -1, 3];
console.log(maxSequence(input, 0, input.length-1));
//console.log(count);


function max(array) {
    var maxEndingHere = 0,
        maxSoFar = 0;
             
    for (var i = array.length - 1; i >= 0; i--) {
        maxEndingHere = Math.max(array[i] + maxEndingHere, 0);
        maxSoFar = Math.max(maxEndingHere, maxSoFar);
    }
    
    return maxSoFar;
}

console.log(max(input));