递归方法防止迭代

本文关键字:迭代 递归方法 | 更新日期: 2023-09-27 18:34:41

我有一个sql数据库,并输入了任何表名,其中I是cretae表层次结构,如下所示。

Z

A B C D E F 是一个表名,Z in 有一个外文 ID。A 在有 B 外国身份证。但是当 F 表中有 D 或 Z ID 名称时。这种递归方法不会停止。

我如何检测表子项本身。

Z
  A
    B
      C=> The continuation of here if comes Z or A or B ID Method not stop and call itself.
  D
    E
    F=> The continuation of here if comes D or Z ID Method not stop and call itself.
     D
     Z

递归方法防止迭代

这是上面评论中提出的方法的示例...

void RecursiveMethod( Table table, List<string> visitedTables )
{
    // note the currently visited table
    var extendedList = visitedTables.ToList();
    extendedList.Add( table.Name );
    // do your thing with the table...
    // ... and recurse deeper
    foreach (var referencedTable in table.ReferencedTables)
        if (!visitedTables.Contains( referencedTable.Name ))
            RecursiveMethod( referencedTable, extendedList );
}

然后从类似的东西开始

RecursiveMethod( theRootTable, new List<string>() );