c# - 这个递归函数如何返回 true?

标签 c# function recursion

这是我的递归函数:

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/

相关文章:

c# - 当字段具有 NULL 值时,SQL WHERE 子句不返回行

c# - 加速 linq 实体查询

c# - 如何从 .NET 客户端应用程序加载 URL

c++ - 初始化无法从const char [3]转换为std::string *

javascript - 如何在 Javascript 中将函数作为参数传递和调用?

c# - C#.NET 中有没有办法将字符串分解为固定长度的子字符串?

function - 这些功能有什么区别

algorithm - 看不懂背包解决办法

java - 简单的递归问题返回方式

c - 遍历递归函数