开发者社区> 问答> 正文

同样的算法,用递归是不是比递推慢很多

在数据规模达到10^9 假设递推 递归 用同样递推公式。。。。如果是,为什么呢?

展开
收起
知与谁同 2018-07-16 19:30:29 1655 0
3 条回答
写回答
取消 提交回答
  • 杀人者,打虎武松也。
    是的
    递归每次进入就是调用子程序,必然慢.而且要不断开内存.
    .多了自然影响速度.
    2019-07-17 22:54:26
    赞同 展开评论 打赏
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    递推和递归比较有意思,简单的说,递推是在借助前一个几经计算出来的结果去计算下一步的结果,以此来得到最终结果,有此可知递推并不需要保留太多现场信息,
    而递归就不一样,虽然也是要借助前一步的结果,但这前一步结果往往刚开始是未知的,要一步一步递推下去,直到遇到终结条件,然后在一层一层的回归,直到回归到最上一层计算出结果,可见递归是包含两步的,一个递推下去,一个在回归 ,
    递归往往表达简单 ,但计算需要时空都比较大
    2019-07-17 22:54:26
    赞同 展开评论 打赏
  • 如果单纯的递归一定会慢很多,因为你计算时反复计算了一些值,浪费了相当多的时间,
    但是优化之后的递归和地推效率基本一样,虽然递归要进栈出栈花费时间,且容易因递归深度过大而栈溢出.

    所谓的优化,就是记忆化,比如递归函数是f(a,b)
    那么弄一个数组,f_r[a,b]
    每次运行递归函数f(a,b)时,检测f_r[a,b]的值是否已定义,是则返回这个值,否则执行函数,且在函数返回前记录返回值到f_r[a,b]中.
    2019-07-17 22:54:26
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载