这是我的递归函数:
public bool controllaSelezioneSottopagina(KPage k_oPaginaAttuale, KPage k_oPaginaSuperiore)
{
foreach (KPage k_oSottoPagina in k_oPaginaSuperiore.SottoPagine)
{
if (k_oSottoPagina.ID == k_oPaginaAttuale.ID)
{
return true;
}
else
{
if (k_oSottoPagina.SottoPagine.Count != 0)
{
controllaSelezioneSottopagina(k_oPaginaAttuale, k_oSottoPagina);
}
}
}
return false;
}
从我调用它的地方来看,我总是得到 false (函数末尾的 return false
将是最后返回的结果,永远)。
事实上,有时它会返回true。
这怎么可能?尝试调试...但找不到错误...
最佳答案
您调用该函数一次,然后它循环,并且返回 true 或递归地调用自身。仅当循环遍历所有元素且条件 (k_oSottoPagina.ID == k_oPaginaAttuale.ID) 从未满足时,它才会返回 false。
现在假设这个条件实际上在第一级中得到满足(尚未进行递归或所有递归调用都返回)。
您调用该函数一次,它会循环,例如在第一次测试时此条件为真。然后你会看到返回值'true'
关于c# - 这个递归函数如何返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113609/