递归函数偶尔会返回分段错误

时间:2016-09-25 00:27:44

标签: c++ recursion divide-and-conquer

我正致力于实施一种分而治之的算法,该算法可以找到彼此最接近的两个点以及它们之间的距离。我的最终解决方案找到了正确的答案(与使用蛮力相比),但大约1/3的时间会返回分段错误错误。我现在一直在努力解决这个问题几天,在这里和那里添加打印声明,但无法找到问题。如果有人看了我的代码,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

你的"划分"循环假定XY具有相同数量的元素。如果Y少于X,您将遇到未定义的行为,这可能是有趣的结果或崩溃。

答案 1 :(得分:0)

尝试更改向量的访问方法。向量下标运算符似乎在某些编译器/平台中具有一种古怪的行为(至少从我的角度来看)。 我认为问题来自于它是一个链表,导致内存中不连续,但这只是猜测。(编辑:std :: vector在内存中是连续的,问题是别的)尝试使用迭代器(简单易用auto关键字),例如:

for (auto iter = Yprime.begin(); iter != Yprime.end(); iter++) {
    // Your code here
}

希望这适合您的情况!