int MaxSubSum(const int arr[], int left, int right)
{
int MaxLeftSum, MaxRightSum;
int MaxLeftBorderSum, MaxRightBorderSum;
int LeftBorderSum, RightBorderSum;
int center, i;
if(left == right)
{
if(arr[left] > 0)
{
return arr[left];
}
else
{
return 0;
}
}
center = (left + right) / 2;
MaxLeftSum = MaxSubSum(arr, left, center);
{
int MaxLeftSum, MaxRightSum;
int MaxLeftBorderSum, MaxRightBorderSum;
int LeftBorderSum, RightBorderSum;
int center, i;
if(left == right)
{
if(arr[left] > 0)
{
return arr[left];
}
else
{
return 0;
}
}
center = (left + right) / 2;
MaxLeftSum = MaxSubSum(arr, left, center);
MaxRightSum = MaxSubSum(arr, center + 1, right);
这个问题其实是一个关于栈内存的关系,每次调用递归,都需要开辟一块栈内存。MaxSubSum(arr, center + 1, right);这个函数的栈内存是嵌套在MaxSubSum(arr, left, center);开辟的栈内存之中的,这个问题花了2个小时我才理解清楚,描述起来有点麻烦,要是有兴趣,可以加我QQ 597483156 使用语音讲解。