小编axe*_*l g的帖子

无需递归即可处理嵌套的项目列表

我有一个类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)

虽然这有效,但我读到在大多数情况下使用循环的迭代方法会更快。

(请注意,为了简洁起见,我抽象并缩短了该方法。这不是生产代码。)

由于存在嵌套类,我很难弄清楚如何将递归方法转变为迭代方法。

任何提示表示赞赏。谢谢。

c# iteration recursion

3
推荐指数
1
解决办法
266
查看次数

标签 统计

c# ×1

iteration ×1

recursion ×1