gpt4 book ai didi

c# - Silverlight 中的递归函数

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:30 24 4
gpt4 key购买 nike

我的 c# silverlight 应用程序中有以下函数来查找树中节点的总子节点

        //get total children
private int getTotalChildren(int id)
{
int total=0;
for (int i = 0; i < persons.Count;i++ )
{
if (persons[i].Manager == id)
{
total += 1;
total += getTotalChildren(persons[i].Id);
}
}
return total;
}

total += getTotalChildren(persons[i].id) 行使浏览器窗口在我运行时自动关闭(我猜这是 silverlights 崩溃的方式?)在 IDE 中我没有收到任何错误。

编辑:我不明白它怎么可能是无限递归,因为没有人以自己为管理者。 persons 是使用此 xml 构建的列表

<?xml version="1.0" ?> 
<Persons>
<Person>
<Id>1</Id>
<Name>temp</Name>
<Qlid>1234</Qlid>
<Manager>0</Manager>
</Person>
<Person>
<Id>2</Id>
<Name>someone</Name>
<Qlid>5678</Qlid>
<Manager>1</Manager>
</Person>
<Person>
<Id>3</Id>
<Name>wefwef</Name>
<Qlid>3333</Qlid>
<Manager>1</Manager>
</Person>
<Person>
<Id>4</Id>
<Name>batman</Name>
<Qlid>6723</Qlid>
<Manager>3</Manager>
</Person>
<Person>
<Id>5</Id>
<Name>batman</Name>
<Qlid>6723</Qlid>
<Manager>3</Manager>
</Person>
</Persons>

edit2:好的,抱歉,伙计们,这真的很愚蠢。这是一个循环,我以为我在桌面上创建了 xml 文件的快捷方式,但不小心做了一个副本。人 1 有人 3 作为其经理,在我编辑副本时程序正在读取的文件中有人 1 作为经理

最佳答案

[推测] 你可能是因为无限递归导致的栈溢出而崩溃了。您是否包含其经理是 id 本身的成员?这将导致您的递归永远不会结束并导致堆栈溢出。

private int getTotalChildren(int id) 
{
int total=0;
for (int i = 0; i < persons.Count;i++ )
{
if (persons[i].Manager == id)
{
total += 1;
if(persons[i].Manager != persons[i].Id)
{
total += getTotalChildren(persons[i].Id);
}
}
}
return total;
}

关于c# - Silverlight 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com