我们知道,阶乘表示法对所有自然数都是有效的。然而,Euler通过定义一个函数,即Gamma函数,将其扩展到所有正实数和复数。它由Γ表示。
您将得到一个非负浮点数,例如'n‘(其中最多有两个小数位),并且您需要将该数字的阶乘正确地输出到至少3个小数位。假设所有输入都是有效的,n <= 7。
现在谈到Gamma函数,有一个积分可以用来求任何阶乘的值。你可以选择使用它。您可以找到更多信息,这里。Gamma函数本质上是递归的。一个可能对您有用的重要属性是:
Γ(n) = (n-1)!,这意味着,n!=Γ(n)。N
还请注意,对于n的所有值,我们实际上不需要知道Γ(n)。例如,查看数字4.5 -我们可以将其阶乘写为:
4.5! = 4.5 * 3.5 * 2.5 * 1.5 * 0.5! = 59.0625 * 0.5!所以这里我们只需要0.5的值,这意味着Γ(1.5)的值。同样,如果我们知道0到1之间的数的阶乘值,即1到2之间的数的伽玛函数的值,我们也可以找到任何十进制的阶乘。所以,这就是为什么下面有一个表格供您帮助:

使用这个表,我们可以看到0.5!,即Γ(1.5) = 0.88623,这给出了我们的结果:(4.5)!= 59.0625 * 0.88623 = 52.3429594,这确实是一个很好的结果。类似地,
(5.7)! = (5.7)*(4.7)*(3.7)*(2.7)*(1.7)*(0.7)! = 454.97457 * 0.90864 = 413.408093此外,如果您不希望使用该表计算伽马函数,下面是一个简单的积分来帮助您解决这个问题:

记住,如果你愿意的话,你只能提供小数点3位以下的答案。但是这个值应该有最小的错误。比如,+- 0.003是可以接受的。
您可以自由决定以何种方式计算阶乘--无论是通过积分,还是通过表,还是使用任何其他方法。
请注意,这里的答案是正确的3位小数点。
2.4 -> 2.981
3.9 -> 20.667
2.59 -> 3.675
1.7 -> 1.545
0.5 -> 0.886这是密码-高尔夫,所以最短的代码赢了!
发布于 2018-03-06 16:28:16
发布于 2018-03-06 16:22:45
https://codegolf.stackexchange.com/questions/157437
复制相似问题