首先看一下我的结构

 typedef struct  {
   int treeDepth;
   unsigned __int8 dmv[19];
   unsigned __int8 dv[19];
   unsigned __int8 ih;
   bool flagLeft = true ;
   bool flagRight = true;
}problem_t;


我有一个与此结构一起使用的函数,

void PMSprune(problem_t &problem)
 {
  /*
   --blocks of code!
   --modify properties of "problem"
  */
  PMSprune(problem);// I want to call it with problem.treeDepth++, but I
  //don't want my original struct to be modified
 }


但是此函数是递归的,我想在修改结构的属性之一的情况下调用此函数,没人知道我该怎么做吗?

更新:
我的项目是实时的,时间对我来说真的很重要,这个函数在一个循环中被调用约一百万次

最佳答案

拆分功能:

void PMSpruneRec(problem_t &problem, int treeDepth)
 {
  /*
   --blocks of code!
   --modify properties of "problem"
  */
  PMSpruneRec(problem, treeDepth + 1);
 }
void PMSprune(problem_t &problem)
 {
  PMSpruneRec(problem, problem.treeDepth);
 }


当然,您仍然需要一些终止条件。

关于c++ - 通过struct调用递归函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38326157/

10-12 19:10