Recursive implementation of Kadane algorithm to find the maximum contiguous sum of an integer array.
import sys
# Define a function to find the maximum subarray sum
def maxSubArraySum(arr):
# Base case: when there is only one element in the array
if len(arr) == 1:
return arr[0]
# Recursive case: divide the problem into smaller sub-problems
m = len(arr) // 2
# Find the maximum subarray sum in the left half
left_max = maxSubArraySum(arr[:m])
# Find the maximum subarray sum in the right half
right_max = maxSubArraySum(arr[m:])
# Find the maximum subarray sum that crosses the middle element
left_sum = -sys.maxsize - 1
right_sum = -sys.maxsize - 1
sum = 0
# Traverse the array from the middle to the right
for i in range(m, len(arr)):
sum += arr[i]
right_sum = max(right_sum, sum)
sum = 0
# Traverse the array from the middle to the left
for i in range(m - 1, -1, -1):
sum += arr[i]
left_sum = max(left_sum, sum)
cross_max = left_sum + right_sum
# Return the maximum of the three subarray sums
return max(cross_max, max(left_max, right_max))
# Example usage
arr = [-2, -3, 4, -1, -2, 1, 5, -3]
max_sum = maxSubArraySum(arr)
print("Maximum contiguous sum is", max_sum)