gpt4 book ai didi

javascript - 如何制作一个函数来计算带小数的数字的阶乘?

转载 作者:可可西里 更新时间:2023-11-01 02:54:43 24 4
gpt4 key购买 nike

如何在 JavaScript 中创建一个函数来计算十进制数的阶乘(或 gamma function)?例如,我如何计算 2.33!

最佳答案

我可能已经找到了现有的解决方案...它是 Lanczos 方法的实现,我在瑞典维基百科 ( http://sv.wikipedia.org/wiki/Gammafunktionen ) 上找到了它。它是用 python 编写的,并表示最多 15 位小数是正确的。我将它移植到 js,交叉检查了一些随机值(http://www.efunda.com/math/gamma/findgamma.cfm)。

http://jsfiddle.net/Fzy9C/

var g = 7;
var C = [0.99999999999980993, 676.5203681218851, -1259.1392167224028,771.32342877765313, -176.61502916214059, 12.507343278686905, -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7];

function gamma(z) {

if (z < 0.5) return Math.PI / (Math.sin(Math.PI * z) * gamma(1 - z));
else {
z -= 1;

var x = C[0];
for (var i = 1; i < g + 2; i++)
x += C[i] / (z + i);

var t = z + g + 0.5;
return Math.sqrt(2 * Math.PI) * Math.pow(t, (z + 0.5)) * Math.exp(-t) * x;
}
}

(当然不支持虚数,因为js不支持)

关于javascript - 如何制作一个函数来计算带小数的数字的阶乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15454183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com