gpt4 book ai didi

c# - 递归实验

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:26 28 4
gpt4 key购买 nike

我正在尝试使用递归进行实验以掌握这个概念。它与语言无关,因此相同的概念适用于 C# 和 Java。

我有一个 TreeView,它有很多节点。我想遍历每个节点并计算满足特定条件的节点。如果在任何时候条件不满足,我希望算法最终返回 -1

每个 TreeViewItem 只有在它有一个名为“Condition”的 Tag 时才会被考虑(总共有 3 种类型的 TreeViewItem - 我只会考虑“Condition”个)。

一旦发现 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,而不是有效条件的数量。

最佳答案

你用

return conditionCount++;

这是不好的做法。有充分的理由。这里发生的是a) 返回条件计数(你设置为零)b)自增条件计数

b 永远不会发生,因为它在 return 语句之后,所以您总是将 0 传递给下一个递归步骤。

你可以使用

return ++conditionCount;

或者更好

conditionCount++;
return conditionCount;

关于c# - 递归实验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com