My solution to a “Daily Coding Problem” that I received in my mail today. Given a list of numbers L , implement a method sum(i, j) which returns the sum from the sublist L[i:j] (including i , excluding j ). For example, given L = [1, 2, 3, 4, 5] , sum(1, 3) should return sum([2, 3]) , which is 5 . You can assume that you can do some pre-processing. sum() should be optimized over the pre-processing step. Here’s my solution in Typescript, oneFortyNine(l: number[], i: number,j: number): number { if(l == null) { return 0; } if(l.length == 0 || i >= l.length || j >= l.length || j < i) { return 0; } //ok, we aren't avoid checking for i and j being zero //this code also assumes i < j if(i == (j - 1)) { return l[i]; } return l[i] + this.oneFortyNine(l, i+1, j); } I actually, don’t understand the pre-processing part of this cod...