gpt4 book ai didi

java - 计算组合和阶乘的递归函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:19 24 4
gpt4 key购买 nike

我正在使用以下两个函数来计算阶乘和组合。

public static long Factorial(long n)
{
if (n == 0)
return 1;
else
return n * Factorial(n-1);

}

public static long combinations (long n, long k)
{
return Factorial(n)/(Factorial(k) * Factorial(n - k));
}

我正在使用它进行测试:

long test = combinations((long)21, (long)13);

它似乎适用于小数字,例如 5,2。但是如果我尝试 21,13,我会得到错误的答案(否定或 0)。

有人知道这里发生了什么吗?

最佳答案

java中long的最大值是2^63。

这将安全地将您带到 20 的阶乘。但是,21 的阶乘约为 2^65,因此您超出了可以表示的最大值。

参见 this question讨论如果您执行导致溢出的乘法,在 Java 中会发生什么。

关于java - 计算组合和阶乘的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435575/

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