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
相关产品推荐
相关产品推荐

