• 动态规划与递归的性能比较


      今天去招聘,问一个来面试的,问的是C#的问题,问到如何计算树的下级节点。其实我的本意是让他在设计树的结构的时候,增加一个FULL_CODE字段,通过SQL的左LIKE进行

    查询。不过小伙子很有意思,我已经提示他多次了,依然义无反顾的一头扎到算法中,非要用算法进行计算。于是引出了今天的随笔!

      小伙儿觉得应该用递归来计算树的下级节点,我说性能太差,当然,我的本意是让他用FULL_CODE来进行左LIKE,不过小伙子想了想,说:“那用动态规划吧。”

    虽然没有回答完全正确,但是也算不错。于是我问到,那么你首选哪个,小伙说是递归。于是我就郁闷了,我说前面已经说过了,递归性能性能太差。小伙的理由是

    虽然动态规划要快一点,但是算法不好写。综合考虑之后,还是觉得递归比较简单。我一看,得,人家就认准了递归了。于是今天就专门写了个动态规划和递归的算法的时间比较。

    递归就不在赘述了,说说动态规划吧,其实动态规划很简单,基本来讲就是将上一次的计算结果记下来,记作A,然后这个A参加下一次的计算,以此类推,直到计算结束。我用递归和

    动态规划实现了斐波纳契数列计算,递归如果超过40的时候就已经需要很长时间了(C#对于递归的开销比较大),40次大概需要1秒左右,但是用动态规划要一亿次,才需要4秒,这个相差

    的可不是几个数量级的问题。

      所以,在以后的开发中,尽量避免使用递归!

  • 相关阅读:
    kubernetes安全机制
    Django 与 Vue交互跨域问题解决
    ELK收集Kubernetes平台日志
    minikube 安装
    k8s安装教程
    Go 语言Map(集合)
    Go 语言类型转换
    Go 语言递归函数
    今天学习:CSS中的类class和标识id选择符(.和#号) 第一季
    人工智能星际争霸2教程
  • 原文地址:https://www.cnblogs.com/baod/p/2760654.html
Copyright © 2020-2023  润新知