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

标签 math time-complexity big-o recurrence

Let function F is recursive and has running time of F(k) is T(k).

F(k) calls F(k-1) once, and does operations which run in O(n!)

F(0) is a base case, and it runs in constant time.

在我看来, 我以为T(n) = T(0) + (1! + 2! + ... + n!)所以 它将是 T(n) <= (n! + n! + ... + n!) for n >=1 . 因此O((n+1)!) .

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

最佳答案

阶乘之和没有很好的封闭形式(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!)。

关于math - T(n) = (T(n-1) + n!) 的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076214/

相关文章:

c - 使用 CUDA 缩放矩阵的行

java - 从我创建的使用公式的方法计算值时遇到问题

python - 如何管理跨多个数据集的查找

algorithm - 递归树和渐近复杂性 : T(n) = T(n/3) + T(n/2) + n

algorithm - 这个排列算法的空间复杂度是多少?

java - 如何检查 triangle2D 是否在另一个内部或重叠?

java - 如何检查相机前面是否有物体?

python - Numpy:需要最有效的方法来处理 1D ndarray 中的选择元素,使用 2D ndarray 的映射,以输出 1D 平均 ndarray

algorithm - : T(n) = T(n - 1) + n如何解决

java - 执行时间和大 O