递归方法防止迭代
本文关键字:迭代 递归方法 | 更新日期: 2023-09-27 18:34:41
我有一个sql数据库,并输入了任何表名,其中I是cretae表层次结构,如下所示。
ZA 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>() );