O(n!) 与 O((n+1)!) 相同吗?

Is O(n!) same as O((n+1)!)?

因为 O(n2) 与 O((n+k)2) 相同,其中 k 是任何常数。那么上面的说法是否也符合同样的逻辑呢?

例如: O((n+1)2) => O(n2 + n + 1) => O(n 2)

没有。 O((n+1)!) 是 O((n+1)n!),因此 O(n) 比 O(n!) 大。

转到大 O 符号的定义,

没有常量 c
(n+1)! <= c*n!

适用于任意大的 n

参考Big O notation的定义。当且仅当:

时,这些函数在 Big O 意义上才被认为是相等的

存在一个常量M,使得:

|(n+1)!| < M |n!|

在对这个不等式进行简单的数学简化后,你得到:

(n+1)! / n! < M

最后:

n+1 < M

对所有 n 来说都是这样,对某些 M 来说是这样吗? 不 - 您可以看到,对于您选择的任何 M,都会有一些 n 的值(例如,您始终可以选择 n = M - 1),但这是不正确的。因此,O((n+1)!)O(n!) 不同。

正如 Nils Pipenbrinck 所指出的,在实践中这并不重要,因为 类 这两个问题对于 n.

的实际值来说都不容易处理