首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Gamma求因式分解

用Gamma求因式分解
EN

Code Golf用户
提问于 2018-03-06 16:03:17
回答 2查看 843关注 0票数 1

Introduction

我们知道,阶乘表示法对所有自然数都是有效的。然而,Euler通过定义一个函数,即Gamma函数,将其扩展到所有正实数和复数。它由Γ表示。

挑战

您将得到一个非负浮点数,例如'n‘(其中最多有两个小数位),并且您需要将该数字的阶乘正确地输出到至少3个小数位。假设所有输入都是有效的,n <= 7。

现在谈到Gamma函数,有一个积分可以用来求任何阶乘的值。你可以选择使用它。您可以找到更多信息,这里。Gamma函数本质上是递归的。一个可能对您有用的重要属性是:

Γ(n) = (n-1)!,这意味着,n!=Γ(n)。N

还请注意,对于n的所有值,我们实际上不需要知道Γ(n)。例如,查看数字4.5 -我们可以将其阶乘写为:

代码语言:javascript
复制
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,这确实是一个很好的结果。类似地,

代码语言:javascript
复制
(5.7)! = (5.7)*(4.7)*(3.7)*(2.7)*(1.7)*(0.7)! = 454.97457 * 0.90864 = 413.408093

此外,如果您不希望使用该表计算伽马函数,下面是一个简单的积分来帮助您解决这个问题:

记住,如果你愿意的话,你只能提供小数点3位以下的答案。但是这个值应该有最小的错误。比如,+- 0.003是可以接受的。

您可以自由决定以何种方式计算阶乘--无论是通过积分,还是通过表,还是使用任何其他方法。

示例

请注意,这里的答案是正确的3位小数点。

代码语言:javascript
复制
2.4 -> 2.981
3.9 -> 20.667
2.59 -> 3.675
1.7 -> 1.545
0.5 -> 0.886

评分

这是密码-高尔夫,所以最短的代码赢了!

EN

回答 2

Code Golf用户

发布于 2018-03-06 16:28:16

用于内置解决方案的

社区wiki

这个答案是为了收集简单的内建的答案。这是一个社区wiki,所以任何人都可以在未经批准的情况下编辑。继续,并包括任何内置的唯一解决方案在这里,遵循克诺的建议和根据我们的共识

果冻,1字节

代码语言:javascript
复制
!

在网上试试!

J,1字节

代码语言:javascript
复制
!

在网上试试!

2个紫貂,1字节

代码语言:javascript
复制
!

在网上试试!

皮斯,2字节

代码语言:javascript
复制
.!

在网上试试!

R,9字节

代码语言:javascript
复制
factorial

在网上试试!

斯塔克斯,2字节

代码语言:javascript
复制
|F

试着在线调试!

Wolfram语言(数学),3字节

代码语言:javascript
复制
#!&

在网上试试!

票数 1
EN

Code Golf用户

发布于 2018-03-06 16:22:45

Dyalog Unicode,1字节

代码语言:javascript
复制
!

在网上试试!

在APL中,阶乘原语总是包含伽玛函数的整个区域。

票数 0
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/157437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档