gpt4 book ai didi

c# - 递归树搜索返回错误的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:58 24 4
gpt4 key购买 nike

我有this implementation树递归函数。它获取从 A 到 D 的所有可能路径。

递归函数是:

private static List<Path> GetPath(int depth, Path path)
{
if (depth == nodes.Length)
{
return new List<Path> { path };
}
else
{
var result = new List<Path>();
foreach(var link in nodes[depth].Links)
{
Node node = new Node { Name = nodes[depth].Name, Links = new[] { link } };
path.Add(node);

result.AddRange(
GetPath(
depth+1, path));
}

return result;
}
}

预期的结果应该是:

A1-B2->C3->D4
A1-B5->C3->D4

但是,返回的路径是相同的,它们包括所有可能的节点两次。

函数有什么问题?

最佳答案

foreach(var link in nodes[depth].Links)
{
Node node = new Node { Name = nodes[depth].Name, Links = new[] { link } };
path.Add(node);

您可能打算在追加下一个节点之前为您在此处找到的每个节点创建一个新路径(这是 path 的副本)。

关于c# - 递归树搜索返回错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com