目前,我正在使用C++编写一个递归函数。该函数需要传递一个大数组和几个常量变量才能正常工作。以下是递归结构:
void recurse_objects(std::vector<Object> &objects, int i, int j, double merge_distance, double size_enclosure, double timestep){
//operations performed
//recursion performed
if(j+1 < objects.size()){
recurse_objects(objects, i, j+1, merge_distance, size_enclosure, timestep);
}else if(i+2 < objects.size()){
recurse_objects(objects, i+1, i+2, merge_distance, size_enclosure, timestep);
}
//more operations performed
}
该函数递归遍历每对独特的对象(i,j)。问题在于,我处理的对象数量达到了500-2000个,函数由于栈空间不足而导致分段错误 - 对于350个以下的对象可以运行。
感觉如果我能将数组和常数变量存储在其他地方,就能节省空间并能够在最后几个对象上运行计算。这个问题有常见的解决方法吗?我所想到的唯一的方法是使用全局变量 - 但这不可行,因为值由系统输入决定,批处理会完全破坏效率,或者将程序改为非递归程序。