如何用C语言的if-else逻辑计算指定级数的和?代码问题修复
修正级数求和的C语言代码
首先明确你的级数规则对应的逻辑:
- 项的分母从1到n依次递增,分子为
x的幂次,每次递增2(即第m项的分子为x^(2*(m-1))); - 分母为奇数时:先从总和中减去当前项,若存在下一项(分母为偶数)则将其加入总和;
- 分母为偶数时:直接将当前项加入总和。
以下是添加if-else逻辑后的修正代码:
#include <stdio.h> #include <math.h> int main() { double x, sum = 0; int n; // 输入x和项数n printf("Enter the value of x: "); scanf("%lf", &x); printf("Enter the number of terms n: "); scanf("%d", &n); // 遍历每一项的分母m(从1到n) for (int m = 1; m <= n; ) { // 计算当前项的值 double current_term = pow(x, 2 * (m - 1)) / m; if (m % 2 == 1) { // 分母为奇数:先减当前项 sum -= current_term; // 检查是否存在下一项,存在则加下一项 if (m + 1 <= n) { double next_term = pow(x, 2 * m) / (m + 1); sum += next_term; m += 2; // 跳过已处理的下一项 } else { m += 1; } } else { // 分母为偶数:直接加当前项 sum += current_term; m += 1; } } printf("The sum of the series is: %.4lf\n", sum); return 0; }
代码说明
- 循环变量
m代表每一项的分母,从1遍历到n; - 当分母
m为奇数时,先执行减当前项的操作,若后续还有项则直接处理下一个偶数分母项并加到总和,之后步长设为2跳过已处理的项; - 当分母
m为偶数时,直接将当前项加到总和,步长设为1处理下一项; - 若你原本的级数分母是阶乘而非整数,只需将代码中计算分母的部分替换为阶乘计算即可(注意阶乘仅1!为奇数,后续均为偶数,逻辑会简化)。
内容的提问来源于stack exchange,提问作者Tahsen Ahmed
相关产品推荐
相关产品推荐

