概念を理解するために、再帰を実験しようとしています。これは言語に依存しないため、同じ概念が C# と Java の両方に適用されます。
私はTreeView
いくつかのノードを持つ を持っています。すべてのノードを繰り返し処理し、特定の条件を満たすノードを数えたいと思います。いつでも条件が満たされない場合、アルゴリズムが最終的に を返すようにしたいと思い-1
ます。
TreeViewItem
名前付きの「条件」がある場合にのみ、それぞれが考慮Tag
されます (全部で 3 種類の TreeViewItem があります。「条件」のもののみを考慮します)。
TreeViewItem が「Condition」タイプであることが判明したら、特定の条件を満たすことを確認したいと考えています。前述したように、条件を満たさない TreeViewItem が 1 つだけでも、アルゴリズムは最終的に -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 を返します。