哪个函数增长得更快,指数(如 2^n、n^n、e^n 等)或阶乘(n!)?Ps:我只是在某个地方读到,n!增长速度超过 2^n。
4 回答
嗯!最终比具有恒定基数(2^n 和 e^n)的指数增长得更快,但 n^n 比 n 增长得更快!因为基数随着 n 的增加而增加。
n! = n * (n-1) * (n-2) * ...
n^n = n * n * n * ...
第一个 in 之后的每一项n^n
都较大,因此 n^n 会增长得更快。
n^n
增长大于n!
- 对于一个很好的解释,请参阅@AlexQueue 的答案。
对于其他情况,请继续阅读:
阶乘函数确实比指数函数渐近增长,但差异何时开始并不清楚。例如,对于n=5
和k=10
,阶乘5!=120
仍然小于10^5=10000
。为了找出阶乘函数何时开始变大,我们必须进行一些快速的数学分析。
我们使用斯特林公式和基本的对数操作:
log_k(n!) ~ n*log_k(n) - n*log_k(e)
k^n = n!
log_k(k^n) = log_k(n!)
n*log_k(k) = log_k(n!)
n = log_k(n!)
n ~ n*log_k(n) - n*log_k(e)
1 ~ log_k(n) - log_k(e)
log_k(n) - log_k(e) - 1 ~ 0
log_k(n) - log_k(e) - log_k(k) ~ 0
log_k(n/(e*k)) ~ 0
n/(e*k) ~ 1
n ~ e*k
因此,一旦n
达到 的大小的近 3 倍k
,阶乘函数将开始变得比指数函数大。对于大多数实际场景,我们将使用 的大值n
和 的小值k
,因此在实践中,我们可以假设阶乘函数严格大于指数函数。
我想向您展示一种更加图形化的方法来很容易地证明这一点。我们将使用除法来绘制一个函数,它会很容易地向我们展示这一点。
让我们用一个基本而枯燥的除法函数来解释除法的一个性质。
随着 a 的增加,对该表达式的评估也会增加。随着 b 减小,该表达式的评估也减小。
使用这个想法,我们可以根据我们期望增加和减少的内容绘制图表,并比较哪个增加更快。
在我们的例子中,我们想知道指数函数是否会比阶乘增长得更快,反之亦然。我们有两种情况,变量指数与变量阶乘的常数,以及变量指数与变量阶乘的变量。
用 Desmos 绘制这些工具(没有隶属关系,它只是一个不错的工具),向我们展示了这一点:
常数到变量指数与变量阶乘的关系图
尽管最初似乎指数表达式增加得更快,但它达到了不再增加得那么快的地步,相反,阶乘表达式增加得更快。
变量到变量指数与变量阶乘的关系图
虽然它最初似乎较慢,但它开始迅速上升超过该点,因此我们可以得出结论,指数必须比阶乘增长得更快。