T(n)=(T(n-1)+ n!)的时间复杂度是多少?

时间:2016-05-06 15:31:06

标签: math time-complexity big-o recurrence

  

假设函数F是递归的,并且F(k)的运行时间是T(k)。

     

F(k)调用F(k-1)一次,并执行以O(n!)

运行的运算      

F(0)是基本情况,它以恒定时间运行。

在我的诚实意见中, 我认为T(n) = T(0) + (1! + 2! + ... + n!)如此 它将是T(n) <= (n! + n! + ... + n!) for n >=1。 因此O((n+1)!)

但我无法确定这是否足够。 这是一个足够的分析?我有什么方法可以测试吗? (这个算法不太实用,但有好奇心。)

1 个答案:

答案 0 :(得分:4)

对于阶乘的总和,没有一个很好的封闭形式(exact answer很乱)。

但是,我们可以使用归纳来证明0! + 1! + 2! + ... + n! ≤2n!:

  • 基本情况:0! ≤2·0!,0! + 1! ≤2·1!,0! + 1! + 2! ≤2·2!
  • 感应:0! + 1! + ... + k! +(k + 1)! ≤2k! +(k + 1)! ≤(k + 1)k! +(k + 1)! = 2(k + 1)!

所以你的复发是从2n以上限制的!并且从下面通过n !,意味着你能得到的最严格的约束就是说递归求解为Θ(n!)。