递归函数不附加数字

Recursive function not appending numbers

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

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 的第二个数字。

您正在按值传递 x。尝试通过引用传递它:vi &x。您的程序中也有错误。如果 start 不等于 end_ 你不记录 "move".