7-1 求交错序列前N项和 (15分)

该博客讨论了如何计算交错序列1-2/3+3/5-4/7+5/9-...的前N项和,分别提供了C语言和Java的实现代码。代码实现了基本的求和逻辑,但可能有待优化。欢迎读者留言提出改进意见。

7-1 求交错序列前N项和 (15分)

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,结果保留三位小数。

输入样例:
5
输出样例:
0.917

c语言:

#include <stdio.h>

int main()
{
    int x,y,N;
    float z,sum=0;
    scanf("%d",&N);
    
    for(x=1;x<=N;x++)
    {
    	y=x*2-1;
        z=x*1.0/y;
    	if(x%2==0)sum=sum+(-1*z);
		else sum=sum+z;
    }
    printf("%.3f",sum);
}

Java:

待更新

发现代码可优化或者有逻辑错误,欢迎同学留言探讨~

交错序列是指正负交替出现的序列,以下几种不同交错序列N解方法: #### 交错序列 $ \frac{1}{1} - \frac{2}{3} + \frac{3}{5} - \frac{4}{7} + \cdots $ N ```c #include <stdio.h> //交错序列N int main() { int n; scanf("%d", &n); double sum = 0.0; int i=1; for (i = 1; i <= n; i++) { if (i % 2 != 0) sum += (double) i / (i * 2 - 1); else sum -= (double) i / (i * 2 - 1); } printf("%.3f\n", sum); return 0; } ``` 此代码通过循环遍历每一,根据数的奇偶性决定该是加还是减,最终累加得到N。 [^1] #### 另一种交错序列 $ \frac{1}{1} - \frac{2}{3} + \frac{3}{5} - \frac{4}{7} + \cdots $ n ```c #include<stdio.h> #include<math.h> int main(){ int n,i; double sum = 1,a=1,b=1,c; printf("请输入一个正整数n:"); scanf("%d", &n); for (i = 1; i < n; i++){ a = a + 1.0; b = b + 2.0; c = a / b; sum += c*pow(-1.0, i); } printf("%lf", sum); return 0; } ``` 该代码同样是计算上述交错序列n,使用`pow`函数来控制每一的正负,通过循环更新母并累加每一的值。 [^2] #### 交错序列 $ \frac{1}{1} - \frac{1}{4} + \frac{1}{7} - \frac{1}{10} + \cdots $ N ```c #include<stdio.h> int main() { int a=1,N; double sum=0,b=1,n=1; scanf("%d",&N); while(n/3<N) { sum=sum+b; n=n+3; a=-a; b=a/n; } printf("sum = %.3lf",sum); return 0; } ``` 此代码针对另一种交错序列,通过`while`循环,根据数更新符号,累加每一得到N。 [^3] #### 交错序列 $ \frac{1}{1} - \frac{2}{3} + \frac{3}{5} - \frac{4}{7} + \cdots $ N的另一种实现 ```c #include<stdio.h> int main() { int N, a, b, i, flag; double d, sum; scanf("%d",&N); a = 1; b = 1; flag = 1; sum = 1; for(i = 1; i < N; i++){ a +=1; //子 b +=2; //母 flag = -flag; //加减号 d = flag*(a*1.0/b); //每一 sum += d; //将每一相加 } printf("%.3f",sum); return 0; } ``` 该代码也是计算交错序列 $ \frac{1}{1} - \frac{2}{3} + \frac{3}{5} - \frac{4}{7} + \cdots $ N,通过循环更新子、符号,累加每一的值。 [^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值