递归函数不附加数字

时间:2015-01-25 04:33:06

标签: c++ recursion vector

我一直试图找出为什么我的递归函数没有返回任何数字。 vivector<int>,原始函数调用中的x为空。其他一切都无关紧要(正常工作)。应该发生的事情是c被推回x并返回x。如果它没有返回任何内容并将c推入全局向量,该函数可以正常工作。

vi generate(const vvi &paths, int index, int start, int end_, int c, vi x)
{
    if (start == end_)
    {
        x.push_back(c);
        return x;
    }



    for(auto path : paths)
    {
        if(path[0] == start)
        {
            x = generate(paths, index, path[1], end_, path[index] + c, x);
        }

    }
    return x;

}

示例:

paths是一个向量的向量。这是可视化的结构

{{1, 2, 1, 0},
 {2, 3, 1, 0},
 {1, 3, 1, 0}}

使用generate(paths, 2, 1, 3, 0, x)调用。开始和结束是1和3.C从0开始.x是一个空的向量向量。

预期(澄清一些不是空的,订单并不重要):

{1, 2}

路径1到3的第一个数字,路径1到2的第二个数字以及路径2到3的数字。

1 个答案:

答案 0 :(得分:0)

您按值传递x。请尝试通过引用传递它:vi &x。你的程序中也有bug。如果start不等于end_,则不会记录&#34;移动&#34;。