您的位置:首页 > 其它

递归关于内存的深入理解

2016-05-29 13:45 211 查看
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);
MaxRightSum = MaxSubSum(arr, center + 1, right);

这个问题其实是一个关于栈内存的关系,每次调用递归,都需要开辟一块栈内存。MaxSubSum(arr, center + 1, right);这个函数的栈内存是嵌套在MaxSubSum(arr, left, center);开辟的栈内存之中的,这个问题花了2个小时我才理解清楚,描述起来有点麻烦,要是有兴趣,可以加我QQ 597483156  使用语音讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: