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<Tree> treeList = new List<Tree>();
public BLLTree()
{
treeList = GetTree();
}
public List<Tree> GetTree()
{
List<Tree> treeList = new List<Tree>();
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<Tree> 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));
}
/// <summary>
/// 递归求和
/// </summary>
static int Sum(int num)
{
if (num == 1)
return 1;
return num + Sum(num - 1);
}
递归还有一种经常使用的场景就是,递归进行数字计算,例如:1..10所有数字相加,这种方式除了使用for循环进行累计,也可以使用递归
总结递归使用:
1,开始条件
2,结束条件
3,逻辑处理,也就是自我调用
递归必须满足这三个条件