递归函数不附加数字
Recursive function not appending numbers
我一直在试图找出为什么我的递归函数没有 returning 任何数字。 vi
是 vector<int>
并且 x
在原始函数调用中是空的。其他一切都无关紧要(正常工作)。应该发生的是 c
被推回到 x
并且 x
被 returned。如果没有 return 并将 c
s 推入全局向量,则该函数工作正常。
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".
我一直在试图找出为什么我的递归函数没有 returning 任何数字。 vi
是 vector<int>
并且 x
在原始函数调用中是空的。其他一切都无关紧要(正常工作)。应该发生的是 c
被推回到 x
并且 x
被 returned。如果没有 return 并将 c
s 推入全局向量,则该函数工作正常。
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".