动态规划与递归的性能比较
今天去招聘,问一个来面试的,问的是C#的问题,问到如何计算树的下级节点。其实我的本意是让他在设计树的结构的时候,增加一个FULL_CODE字段,通过SQL的左LIKE进行
查询。不过小伙子很有意思,我已经提示他多次了,依然义无反顾的一头扎到算法中,非要用算法进行计算。于是引出了今天的随笔!
小伙儿觉得应该用递归来计算树的下级节点,我说性能太差,当然,我的本意是让他用FULL_CODE来进行左LIKE,不过小伙子想了想,说:“那用动态规划吧。”
虽然没有回答完全正确,但是也算不错。于是我问到,那么你首选哪个,小伙说是递归。于是我就郁闷了,我说前面已经说过了,递归性能性能太差。小伙的理由是
虽然动态规划要快一点,但是算法不好写。综合考虑之后,还是觉得递归比较简单。我一看,得,人家就认准了递归了。于是今天就专门写了个动态规划和递归的算法的时间比较。
递归就不在赘述了,说说动态规划吧,其实动态规划很简单,基本来讲就是将上一次的计算结果记下来,记作A,然后这个A参加下一次的计算,以此类推,直到计算结束。我用递归和
动态规划实现了斐波纳契数列计算,递归如果超过40的时候就已经需要很长时间了(C#对于递归的开销比较大),40次大概需要1秒左右,但是用动态规划要一亿次,才需要4秒,这个相差
的可不是几个数量级的问题。
所以,在以后的开发中,尽量避免使用递归!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库