C# 递归的简单Demo

void Main()
{

    //通过递归,用tree 4 找到tree 1
    var t = new BLLTree().getParentTree(new Tree() { Id = 4, ParentId = 2 });
    Console.WriteLine(t.First().Id);
}

public class BLLTree
{
    List treeList = new List();
    public BLLTree()
    {

        treeList = GetTree();
    }

    public List GetTree()
    {
        List treeList = new List();

        Tree tree1 = new Tree { Id = 1, Name = "Tree 1", ParentId = 0 };
        Tree tree2 = new Tree { Id = 2, Name = "Tree 2", ParentId = 1 };
        Tree tree3 = new Tree { Id = 3, Name = "Tree 3", ParentId = 1 };
        Tree tree4 = new Tree { Id = 4, Name = "Tree 4", ParentId = 2 };

        treeList.Add(tree1);
        treeList.Add(tree2);
        treeList.Add(tree3);
        treeList.Add(tree4);
        return treeList;
    }

    public List getParentTree(Tree tree1)
    {
        if (treeList.Where(x => x.ParentId == 0 && x.Id == tree1.ParentId).Count() == 1)
        {
            return treeList.Where(x => x.ParentId == 0 && x.Id == tree1.ParentId).ToList();
        }
        return getParentTree(treeList.Where(x => x.Id == tree1.ParentId).First());
    }

}

public class Tree
{

    public int Id { get; set; }
    public string Name { get; set; }
    public int ParentId { get; set; }
}

上面代码是树形结构的简单变量,一般企业中树形结构,管理部门,角色,岗位等都需要用到树形结构,就需要用到树形结构的解析,demo仅供参考,实际业务结合demo改造

void Main()
{

Console.WriteLine(Sum(10));	

}
/// 
/// 递归求和
/// 
static int Sum(int num)
{
	if (num == 1)
		return 1;
	return num + Sum(num - 1);
}

递归还有一种经常使用的场景就是,递归进行数字计算,例如:1..10所有数字相加,这种方式除了使用for循环进行累计,也可以使用递归

总结递归使用:

1,开始条件

2,结束条件

3,逻辑处理,也就是自我调用

递归必须满足这三个条件

你可能感兴趣的:(c#,windows,microsoft)