求解答!编写程序,输入正整数n,求Sn=1-2!/3+3!/5....+(-1)^(n+1)n!/2n-1

img

编写程序,输入正整数n,求Sn=1-2!/3+3!/5....+(-1)^(n+1)n!/2n-1


#include<stdio.h>
 
int main()
{      //主要就是求阶乘的
    int i,n,t=1;     //定义初始值
    float j=-1.0,s;
    printf("输入正整数:");
    scanf("%d", &n);
 
    for(i=1;i<=n;i++){
        t *= i;
        j *= -1;
        s += j*t/(2*i-1);     // 结果s的递推公式
    }
 
    printf("总和为%.3f", s); 
 
    return 0;
}

#include <stdio.h>
int main(){
int n,N=1,i;//定义变量i N
double m,Sn=0.0;//赋初始值为0
m=-1.0;
printf("请输入正整数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
N*=i;
m*=-1.0;
Sn+=mN/(2i-1);
}
printf("总和为%.3lf\n",Sn);
return 0;
}

img


你题目的解答代码如下:

#include <stdio.h>

int main()
{
    int n, i, f = -1;
    double s = 1, g = 1;
    printf("请输入正整数:");
    scanf("%d", &n);
    for (i = 2; i <= n; i++)
    {
        g *= i;
        s += g / (2 * i - 1) * f;
        f = -f;
    }
    printf("总和为%.3lf", s);
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

def Sn(n):
    m = 0
    for i in range(1, n+1):
        i阶乘 = 1
        for j in range(1,i+1):
            i阶乘 = i阶乘*j

        m += (-1)**(i+1) * i阶乘/(2*i-1)
    return round(m,3)

r = input("请输入正整数:")
print("总和为",Sn(int(r)))

输出结果如下:

img

#include<stdio.h>

int main()
{
    int i,n,t=1;
    float j=-1.0,s;
    printf("输入正整数:");
    scanf("%d", &n);

    for(i=1;i<=n;i++){
        t *= i;
        j *= -1;
        s += j*t/(2*i-1);
    }

    printf("总和为%.3f", s); 

    return 0;
}