我正在编写一个程序,打印出帕斯卡三角形的行,它最多可以工作到第 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 …