C++递归改循环的问题。

函数的代码如下:

 void divconqrecurse(struct mesh *m, struct behavior *b, vertex *sortarray,
                    int vertices, int axis,
                    struct otri *farleft, struct otri *farright)
{
  struct otri innerleft, innerright;
  int divider;
  if (vertices == 2) 
  {
    //结束语句--------对farleft,farright赋值
    //用到的相关参数,sortarray,m,b;
    return;
  }
  else if (vertices == 3) 
  {
    //结束语句--------对farleft,farright赋值
    //用到的相关参数,sortarray,m,b;
    return;
  } 
  else 
  {
    divider = vertices >> 1;
    divconqrecurse(m, b, sortarray, divider, 1 - axis, farleft, &innerleft);
    divconqrecurse(m, b, &sortarray[divider], vertices - divider, 1 - axis,
                   &innerright, farright);
    mergehulls(m, b, farleft, &innerleft, &innerright, farright, axis);
  }
}

能不能修改为循环的关键在于mergehulls这个函数是干嘛的,能不能调换调用顺序。将递归修改为尾递归,只有尾递归才可以转换为循环。
如果不能转换为尾递归,那么只能用堆栈模拟函数调用强行转换。