开发者社区> 问答> 正文

递归算法时间复杂度题目求解答....

T(n) =(1/n) (T(0) + T(1) + .... + T(n - 1)) + 5n 求 时间复杂度是多少 求详细解答..谢谢

展开
收起
知与谁同 2018-07-21 12:41:59 2275 0
2 条回答
写回答
取消 提交回答
  • 编程序能做到o(1)的。。。
    2019-07-17 22:55:47
    赞同 展开评论 打赏
  • 胜天半子
    如果就按这个递归式子算,计算第n项需要的计算量An = ΣAi {i,0 -> n-1}
    因此An = S(n-1) => An = 2*A(n-1)
    又因为0,1两项可以直接算得. 故 A0 = 1, A1 = 1
    所以第n项的计算量为{n=0 : 1, n>0 : 2^(n-1)}
    总的来说是O(2^n)级别

    当然真正实现这个算法的时候不会这么采用暴力的计算.如果加入记忆化,把每个Ti的值先记下,则时间复杂度可以降到O(n^2)级别

    进一步优化,可以尝试计算这个递归数列的通项.不过我简单试了下发现最后要计算1/n的和,这个据我所知只能直接计算.这样整个算法的复杂度可以降到O(n).

    至于楼下说的O(1)的常数做法,我个人没有想到,也许在数据规模小的情况下可以使用查表法做到.
    2019-07-17 22:55:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

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