You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

阶乘法计算二项式系数的C程序运行出错,求助排查

错误原因排查

  • 核心错误是fak函数内的局部变量fak_n未完全初始化:仅当n<=1时fak_n会被赋值为1,当输入n>1时,fak_n是未初始化的随机垃圾值,后续乘法运算结果完全错误。
  • 次要问题:int类型取值范围有限,阶乘增长速度极快,当n>=13时就会超出32位int的最大值导致溢出,如需计算更大的二项式系数可改用long long甚至无符号长整型。

修复后的代码

#include <stdio.h>

int fak(int n) {
    int fak_n = 1; // 直接在声明时初始化,覆盖所有输入情况
    for (int i = 2; i <= n; i++) {
        fak_n = fak_n * i;
    }
    return fak_n;
}

int bin(int n, int k) {
    return fak(n) / (fak(k) * fak(n - k));
}
        
int main() {
    int n;
    int k;
    scanf("%d%d", &n, &k);
    printf("%d\n", bin(n, k));
    return 0;
}

验证示例

输入5 2,输出应为10,符合二项式系数C(5,2)的计算结果。

内容的提问来源于stack exchange,提问作者user15991497

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 14:45:03