首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归函数返回列表中的分段错误

递归函数返回列表中的分段错误
EN

Stack Overflow用户
提问于 2013-05-01 07:20:03
回答 1查看 138关注 0票数 3

我有一个递归函数,它返回一个结构列表。

代码语言:javascript
复制
struct Neighbour_node{
    int index;
    double dist;
};

下面是函数:

代码语言:javascript
复制
list<Neighbour_node> findNewNeighbours(int original, int particle, int k){
    Neighbour_node node;
    list<Neighbour_node> neighbours;
    list<Neighbour_node> temp_neighbours;
    list<Neighbour_node>::iterator iterator;

    if (k <= 0){
        if (particle == -1){
            node.index = -1;
            node.dist = 1000.0;
        }
        else{
            node.index = particle;
            node.dist = glm::length(hair[original].position - hair[particle].position);
            neighbours.push_back(node);
        }
    }
    else {
        for (unsigned int i = 0; i < hair[particle].neighbours.size(); i++){
            temp_neighbours = findNewNeighbours(original,hair[particle].neighbours[i],k - 1);

            temp_neighbours.sort(compareNeighbour_node);
            neighbours.merge(temp_neighbours,compareNeighbour_node);
        }
    }
    return neighbours;
}

行:

代码语言:javascript
复制
temp_neighbours = findNewNeighbours(original,hair[particle].neighbours[i],k - 1);

导致分段错误,我不确定原因。我已经看过和我错误的例子类似的例子,看起来没有错。但这些函数不是递归的,所以我猜这就是问题所在-此外,当k=0(一个函数只调用一次-因此就好像它不是递归的一样),那么它就不会崩溃。有谁能帮我一下吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-05-08 14:16:18

检查操作系统中的堆栈大小。

ulimit -s

我认为这是因为堆栈。因为你需要的堆栈似乎在快速增加。

展示你的“头发”,让我们看到更多细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16310480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档