求解答一下这个数列和非正负数列编写时区别在哪里

如下图所示,题目要求填写空缺程序。非空缺部分已经了解,但空缺成分不是很会做,希望得到指点

img

区别应该在于每一项有符号位,分子和分母三个部分组成的不同。

然后具体实现可以用循环控制计算的次数,再在循环中分别计算每一项分子,分母的值,然后结合符号位计算出当前项数列的值,再把当前项数列的值累加到和中,循环结束则可计算出数列的和。

代码如下:

#include <stdio.h>

double fun(int n,double x){
    
    //printf("fun\n");
    double s=1;  // 将数列初始化为第一项的值 
    double numerator=1;   // 分子 
    double denominator=1;  // 分母 
    double single;  // 临时存储数列每一项的值 
    int i;
    int flag=-1;  // 符号位 
     
    for(i=2;i<=n;i++){  // 从数列第二项开始计算到指定项 
        
        numerator*=x;   // 分子为x的次方 
        denominator*=(i-1); // 分母为 (当前项数-1 )的阶乘 
        single = flag*numerator/ denominator;  // 数列的每一项为符号位乘以分子再除以分母 
        
        s+=single;  // 把数列当前项的值累加到和中 
        flag*=-1;  // 符号位变化 
        //printf("i=%d,分子=%.2lf,分母=%.2lf,当前项=%.2lf,s=%.2lf\n",i,denominator,numerator,single,s);
        
    }    
    
    return s;  // 返回数列和 
} 

int main(void){
    
    int n;
    double x,s;
    scanf("%d %lf",&n,&x);
//    printf("n=%d,x=%lf\n",n,x); 
    s=fun(n,x);
    printf("%lf\n",s);
    return 0;
}

img

数学问题