麻烦搞清楚这个的递归

时间:2011-09-05 04:33:03

标签: c# recursion graph

var seller = new User(1);

for (var i = 0; i < 3; ++i)
    seller.Children.Add(new User(1));

foreach (var child in seller.Children)
{
    for (var i = 0; i < 3; ++i)
        child.Children.Add(new User(1));

    foreach (var child2 in child.Children)
    {
        for (var i = 0; i < 3; ++i)
            child2.Children.Add(new User(1));

        foreach (var child3 in child2.Children)
            for (var i = 0; i < 3; ++i)
                child3.Children.Add(new User(1));
    }
}

我正在尝试创建一个对象树,其中每个级别有3个对象。我知道有一种方法可以使它成为一个递归函数

2 个答案:

答案 0 :(得分:5)

private static void AddChildren(User user, int maxDepth)
{
    if (maxDepth == 0)
        return;
    for (var i = 0; i < 3; ++i)
    {
        var child = new User(1);
        AddChildren(child, maxDepth - 1);
        user.Children.Add(child);
    }
}

最初的电话应该是

AddChildren(new User(1), 3); //where 3 is max depth of tree.

答案 1 :(得分:0)

你的意思是每个级别有三个对象? (它是每个节点有三个孩子吗?) 你何时停止?(即树的高度是多少?)