小编miz*_*zmo的帖子

在C中计算“N选择K”时出现奇怪的计算错误

我正在编写一个程序,打印出帕斯卡三角形的行,它最多可以工作到第 14 行,该行的值为 13。我已将问题范围缩小到我所做的“N 选择 K”的选择函数”,在“12 Choose X”之后似乎会产生不正确的值,我不知道为什么。

这是我计算阶乘的函数(似乎有效)和有问题的函数的代码。还包括第 14 行之后生成的三角形的复制和粘贴。

另外,作为参考,这样做printf("%ld \n", choose(13, 1));会产生 4 的结果。它应该是 13。

long factorial(int value)
{
    int i;
    long running = 1;
    for (i = 1; i <= value; i++)
    {
        running *= i;
    }
    return running;
}

long choose(int n, int k)
{
    if (n < k)
        return 0; 

    return factorial(n) / (factorial(k) * factorial(n - k));
}

Run Code Online (Sandbox Code Playgroud)

1 1 -4 -1 2 4 7 9 9 7 4 2 -1 …

c factorial pascals-triangle

3
推荐指数
1
解决办法
195
查看次数

标签 统计

c ×1

factorial ×1

pascals-triangle ×1