我試圖通過遞歸實驗來掌握這個概念。它是語言不可知的,所以相同的概念適用於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。 –