确定工作/时间复杂度递归程序

时间:2015-12-09 00:24:05

标签: recursion big-o time-complexity

您好我几天后无法理解大学课程中递归程序的复杂性。语言是miranda,但我主要不明白如何确定工作量'在每个级别的跟踪。任何人都可以解释在前面的测试示例中如何制定答案?提前谢谢。

Example Trace
p9 [1,2,3,4,5,6]

=> 3:[2,3,4,5,6] ++ p9 [2,3,4,5,6]
                           |
                           |
               3:[3,4,5,6] ++ p9 [3,4,5,6]
                                    |
                                    |
                          3:[4,5,6] ++ p9 [4,5,6]
                                              etc.
  

a)如果输入的长度为n,则计算中有n-1个级别,因为在每个递归调用中从列表中删除一个元素,直到列表的长度为1。

     

b)第一级的工作与n + 1成比例           因为++运算符取决于它的长度           最左边的清单。           下一级的工作与n成正比           下一级的工作与n - 1成正比            等,直到最后一次通话,当工作是2个单位

     

c)因此,平均水平的工作是成比例的           到n / 2。

     

d)因此,总工作量与n ^ 2

成正比      

e)因此,复杂度为O(n ^ 2)

0 个答案:

没有答案
相关问题