C# 递归的简单Demo

文章展示了如何在C#中使用递归方法,通过BLLTree类的getParentTree方法查找树形结构中的节点,同时介绍了递归求和函数Sum的用法,强调了递归的三个基本要素:开始条件、结束条件和逻辑处理。
摘要由CSDN通过智能技术生成
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,逻辑处理,也就是自我调用

递归必须满足这三个条件

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值