332513 2023-10-26 22:36 采纳率: 43.8%
浏览 20
已结题

c# 循环中套递归,怎么实现?

一个list中有多个item,每个item都要进行调用自身,问题大概是这样的,函数传入一个datatable 找到符合条件的,剩余不符合的需要再进入这个函数,直到结束,但是此时不符合条件的可能是多种组合,这时候怎么做,可以用循环中套递归吗,怎么实现?

  • 写回答

17条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-26 22:36
    关注
    获得0.45元问题酬金

    引自强大而免费的微信小程序:皆我百晓生

    你可以使用递归来解决这个问题。首先,在函数中接收一个DataTable参数,然后遍历DataTable中的每一行,判断是否符合条件。如果符合条件,将其添加到一个结果集合中。

    接下来,创建一个辅助函数,该函数接收一个列表和当前处理的行索引,然后递归调用自身,以处理列表中的下一个项。在每次递归调用中,通过修改条件来过滤掉不符合条件的项,并将满足条件的项添加到结果集合中。最后,返回结果集合。

    以下是一个示例代码:

    public void ProcessDataTable(DataTable dataTable)
    {
        List<DataRow> result = new List<DataRow>();
    
        // 遍历DataTable中的每一行
        foreach (DataRow row in dataTable.Rows)
        {
            // 判断是否符合条件
            if (IsMatch(row))
            {
                result.Add(row);
            }
        }
    
        // 处理不符合条件的项
        List<DataRow> remainingRows = new List<DataRow>(dataTable.Rows.Cast<DataRow>().Except(result));
        ProcessRemainingRows(remainingRows);
    }
    
    public void ProcessRemainingRows(List<DataRow> remainingRows)
    {
        // 递归终止条件:没有剩余项
        if (remainingRows.Count == 0)
        {
            return;
        }
    
        List<DataRow> result = new List<DataRow>();
    
        // 遍历剩余项
        for (int i = 0; i < remainingRows.Count; i++)
        {
            DataRow row = remainingRows[i];
    
            // 进行处理,并判断是否符合条件
            if (IsMatch(row))
            {
                result.Add(row);
            }
        }
    
        // 移除已处理的项
        remainingRows.RemoveAll(result.Contains);
    
        // 递归调用处理剩余项
        ProcessRemainingRows(remainingRows);
    }
    
    public bool IsMatch(DataRow row)
    {
        // 判断行是否符合条件的逻辑
        // 返回 true 或 false
        return true;
    }
    

    在以上示例中,ProcessDataTable函数首先遍历DataTable中的每一行,判断是否符合条件,并将满足条件的行存入结果集合。然后,将剩余的行传递给ProcessRemainingRows函数进行处理。ProcessRemainingRows函数也是遍历剩余行,进行处理,并递归调用自身,直到剩余行为空为止。

    你可以根据需要修改条件判断的逻辑。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月3日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀