zoukankan      html  css  js  c++  java
  • 动态规划与递归的性能比较

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    学习FPGA的几个阶段
    Quartus 编译问题Info (176311): Pin ~ALTERA_nCEO~ is assigned to pin location Pin_P28 (IOPAD_X115_Y43_N7)
    No Title
    最近比较忙
    如何在Qsys 中定制Nand_Flash软核(学习)
    Nand_Flash工作原理(学习)2
    (转)FPGA时序约束的几种方法
    ‘Downloading ELF Process failed’问题如何解决
    celery使用的时候的坑
    Git命令一览
  • 原文地址:https://www.cnblogs.com/baod/p/2760654.html
Copyright © 2011-2022 走看看