// the Big-O: O(log n) public static int binarySum(int[] data, int low, int high) { if (low > high) { return 0; } else if (low == high) { return data[low]; } else { int mid = (low + high) / 2; return binarySum(data, low, mid) + binarySum(data, mid + 1, high); } } // the Big-O: O(n) public static int linearSum(int[] data, int n) { if (n == 0) { return 0; } else { return linearSum(data, n - 1) + data[n - 1]; } }