我正在尝试使用递归来掌握这个概念。它与语言无关,因此相同的概念适用于 C# 和 Java。
我有一个TreeView
有多个节点的。我想遍历每个节点并计算满足特定条件的节点。如果在任何时候条件不满足,我希望算法最终返回-1
。
TreeViewItem
只有当它有一个命名的“条件”时才会考虑每个Tag
(总共有 3 种 TreeViewItems - 我只会考虑“条件”的那些)。
一旦发现 TreeViewItem 属于“条件”类型,我想检查它是否满足某个条件。正如我之前提到的,即使只有一个 TreeViewItem 不满足条件,我希望算法最终返回 -1。
如果算法不返回 -1,我希望它返回它找到的有效条件的数量 - 即每次成功通过条件时都会增加一个整数,最后返回最终计数。
这是我迄今为止尝试过的:
private int CountConditions(TreeViewItem item)
{
int conditionCount = 0;
foreach (TreeViewItem child in item.Items)
{
int previousCount = CountConditions(child);
if (previousCount == -1)
{
return -1;
}
else
{
return conditionCount += previousCount;
}
}
if (item.Tag.Equals("Condition"))
{
if (/*Condition is not satisfied*/)
{
return -1;
}
else
{
return conditionCount++;
}
}
else
{
return conditionCount;
}
}
如果不满足条件,我当前的算法实际上会返回 -1,但是如果满足条件,它只会返回 0,而不是有效条件的数量。