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

C++帕斯卡三角形代码输出与手动计算不符,求排查原因

问题分析与解答

你的代码逻辑是正确的,输出1 3 3 1是帕斯卡三角形对应第4行(组合数C(3,0)到C(3,3))的正确结果。你手动计算出现偏差,是因为没有严格按照代码的递推逻辑逐步执行计算,下面拆解每一次循环的完整流程:

循环迭代步骤(固定i=3)

初始化:coef=1,j=0

  1. j=0:
    • 触发if(j==0)分支,coef被赋值为1
    • 输出1,j自增为1
  2. j=1:
    • 进入else分支,计算:coef = 1 * (3-1+1)/1 = 1*3/1 = 3
    • 输出3,j自增为2
  3. j=2:
    • 进入else分支,计算:coef = 3 * (3-2+1)/2 = 3*2/2 = 3
    • 输出3,j自增为3
  4. j=3:
    • 进入else分支,计算:coef = 3 * (3-3+1)/3 = 3*1/3 = 1
    • 输出1,j自增为4,循环结束

你手动计算的疏漏

你认为j=2时输出应为1,大概率是错误地跳过了递推过程,直接误用了非迭代的组合数计算方式,或者中间步骤没有用上一次迭代后的coef值。代码采用的递推公式是组合数的标准推导式:
C(n,k) = C(n,k-1) * (n -k +1)/k
这个公式的正确性可以通过组合数的阶乘定义推导验证,因此代码的计算逻辑是成立的。

另外注意你的代码中coef变量缺少类型声明,建议修改为int coef = 1;,避免编译警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:45:27