我有一个类Item,如下所示:
public class Item
{
public string Name { get; set; }
public int Value { get; set; }
public List<Item> SubItems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
项目可以嵌套 n 层,这意味着任何项目都可以包含一个项目列表,其中每个项目都包含一个项目列表...
我想编写一个方法,它接受 的实例作为参数并返回所有嵌套项的item总和。value
我当前的递归方法如下所示:
public int GetSumOfValue(Item item)
{
int sum = item.Value;
if (item.SubItems == null)
{
return sum;
}
foreach (var subItem in item.SubItems)
{
sum += GetSumOfValue(subItem);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我读到在大多数情况下使用循环的迭代方法会更快。
(请注意,为了简洁起见,我抽象并缩短了该方法。这不是生产代码。)
由于存在嵌套类,我很难弄清楚如何将递归方法转变为迭代方法。
任何提示表示赞赏。谢谢。