我试图通过递归实验来掌握这个概念。它是语言不可知的,所以相同的概念适用于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;
}
}
我现在的算法确实INFACT返回-1,如果条件不满足,但是如果条件满足,它只是返回0,而不是量的有效条件。
此代码不能同时为“C#”和“Java”。而这当然不是Java。 –