class DivideAndConquer {
static sumArray(arr: number[], start: number, end: number): number {
if (start > end) {
return 0; // base case: empty range sum is 0
}
if (start === end) {
return arr[start]; // base case: single element sum
}
const mid = Math.floor((start + end) / 2);
const leftSum = this.sumArray(arr, start, mid); // sum left half
const rightSum = this.sumArray(arr, mid + 1, end); // sum right half
return leftSum + rightSum; // combine results
}
}
const arr = [2, 4, 6, 8];
const totalSum = DivideAndConquer.sumArray(arr, 0, arr.length - 1);
console.log(`sum([${arr.join(",")}])=${totalSum}`);if (start > end) { return 0; }
base case: empty range sum is 0
if (start === end) { return arr[start]; }
base case: return single element sum
const mid = Math.floor((start + end) / 2);
find middle index to divide array
const leftSum = this.sumArray(arr, start, mid);
recursively sum left half
const rightSum = this.sumArray(arr, mid + 1, end);
recursively sum right half
return leftSum + rightSum;
combine sums of halves