#include <iostream>
#include <vector>
// Function to sum array using divide and conquer
int divideAndConquerSum(const std::vector<int>& arr, int left, int right) {
if (left == right) {
return arr[left]; // base case: single element sum
}
int mid = left + (right - left) / 2;
int leftSum = divideAndConquerSum(arr, left, mid); // sum left half
int rightSum = divideAndConquerSum(arr, mid + 1, right); // sum right half
return leftSum + rightSum; // combine sums
}
int main() {
std::vector<int> arr = {2, 4, 6, 8};
int totalSum = divideAndConquerSum(arr, 0, arr.size() - 1);
std::cout << "sum([2,4,6,8])=" << totalSum << std::endl;
return 0;
}if (left == right) { return arr[left]; }
base case: return single element sum
int mid = left + (right - left) / 2;
find middle index to divide array
int leftSum = divideAndConquerSum(arr, left, mid);
recursively sum left half
int rightSum = divideAndConquerSum(arr, mid + 1, right);
recursively sum right half
return leftSum + rightSum;
combine sums of halves