gig886 2014-12-09 08:51 采纳率: 0%
浏览 2039

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);
  }
}
  • 写回答

1条回答

  • devmiao 2014-12-09 10:20
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码