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

C语言使用for循环计算阶乘倒数累加和问题咨询

解决方案

你当前代码的核心问题是每轮循环都会直接覆盖calculation变量的取值,没有执行累加操作,因此无法得到所有阶乘倒数的总和。

具体修改要点

  • 新增临时变量存储单轮阶乘倒数的计算结果,避免覆盖总和数值
  • 将赋值逻辑改为累加,每轮计算完成后把单轮值加到总和变量中
  • 循环结束后单独输出最终累加结果
  • 补充:原代码中int类型的变量f存储阶乘,当计算到13!时就会超出int的存储上限发生溢出,建议同步修改f的类型为long long以提升准确性

修改后完整代码

#include<stdio.h>

int i;
long long f = 1; // 改为long long避免阶乘溢出
double calculation = 0; // 改为double提升浮点精度
int main() 
{
    for (i = 1; i <= 19; i++) 
    {
        f = f * i;
        //printf("Factorial of %d is: %lld\n",i,f);// 个人调试校验用
        double single_val = 1.00 / f;
        calculation += single_val;
        printf("Factorial calculation for %d! = %f\n", i, single_val);
    }
    printf("所有calculation值累加最终结果:%f\n", calculation);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:09