数列求和(二)


方法一:通过符号变换
public class Test05 {

	public static void main(String[] args) {
		double sum = 0,sum1 = 0, sum2 = 0;
		for (int i = 1; i <=51; i++) {			
				double num = 1.0/(2*i-1);
				if(i % 2 == 0) {
					sum1+=num;
				}else {					
					sum2+=num;
				}
			sum = sum2 - sum1;
		}
		System.out.println(sum);

	}

}
方法二:
/*
	求1-1/3+1/5-1/7+1/9...-1/99+1/101之和,并且输出结果值。
	正数项:1/1 1/5 1/9 1/13 1/17.........1/101	
	负数项:1/3 1/7 1/11 1/15...............1/99
	统一规律:分子不变永远是1,分母每次递增4
*/
public class Test{
	public static void main(String[] args){
		double sum1 = 0;//正数项的和
		// for循环中i的作用其实就是分母,因为在递增
		for(int i = 1;i < 102;i+=4){
			sum1 = sum1 + 1.0 / i;//注意因为结果是浮点型的,那么这里要进行转换
		}
		//求负数项的和
		double sum2 = 0;
		for(int i = 3;i < 100;i+=4){
			sum2 = sum2 + 1.0 / i;
		}
		double sum = 0;
		sum = sum1 - sum2;//这里因为sum2其实按照题目要求是带负号的所以要拿正数项的和去减去负数项的和
		System.out.println("最终的结果是.............." + sum);
	}
}


### 数列求和算法及其实现 数列求和是一个常见的数学问题,在计算机科学中可以通过多种方式实现其解决方案。以下是几种典型的数列求和算法以及其实现。 #### 奇偶交替数列求和 对于奇位数相加、偶位数相减的情况,可以采用如下代码实现: ```cpp int alternatingSum(int n) { int sum = 0; // 对于奇数位置上的数值进行累加操作 for (int i = 1; i < n + 1; i += 2) { sum += i; } // 对于偶数位置上的数值进行累减操作 for (int i = 2; i < n + 1; i += 2) { sum -= i; } return sum; } ``` 此代码片段展示了如何通过循环分别处理奇数与偶数的位置并完成相应的加减运算[^1]。 #### 几何数列求和 针对几何数列 \(S_n = \sum_{i=0}^{n} x^i\)求和问题,可利用迭代的方式逐步累积每一项的结果至最终总和之中: ```cpp int geometricSeriesSum(int x, unsigned n) { int sum = 0; for (unsigned int i = 0; i <= n; ++i){ sum = sum * x + 1; } return sum; } ``` 该函数的时间复杂度为线性的\(O(n)\),其中每次循环都会更新当前的累计值直到达到指定次数为止[^2]。 #### 等差数列求和 等差数列前N项和可通过公式直接计算得出或者借助编程语言编写相应逻辑来达成目标。下面给出了一种基于条件分支判断的不同场景下的具体做法: ```python def arithmetic_series_sum(): x = int(input("请输入等差数列首项:")) d = int(input("请输入等差数列公差:")) n = int(input("请输入要求的前n项和的项数:")) if x == 0 and d == 0: result = x print(f'这是首项为0,公差为0的常数数列,所以前{n}项和为{result}') elif x != 0 and d == 0: result = n * x print(f'这是首项不为0,但公差为0的常数数列,所以前{n}项和为{result}') elif x == 0 and d != 0: result = n * ((n - 1) * d / 2) print(f'这是首项为0,但公差不为0的常数数列,所以前{n}项和为{result}') else: result = n * x + n * ((n - 1) * d / 2) print(f'前{n}项和为{result}') arithmetic_series_sum() ``` 上述脚本涵盖了四种不同情形下等差数列求和的方法,并提供了清晰易懂的操作界面供用户交互输入数据后得到预期答案[^3]。 #### Python通用数列求和 如果希望让用户自由定义任意形式的数列并通过程序自动解析执行,则需设计更加灵活开放型接口允许接收外部参数作为内部核心组件的一部分参与整个流程运转当中去: ```python def custom_sequence_sum(): input_str = input('请输入由逗号分隔的一系列数字:') numbers = list(map(float, input_str.split(','))) total = sum(numbers) print(f'{numbers}这些数的合计:{total:.2f}') custom_sequence_sum() ``` 这里我们接受来自用户的字符串类型的原始资料经过简单预处理转换成浮点数组之后调用内置`sum()`方法快速获取总体数量级大小信息反馈给前端显示出来[^4]. 另外还有一种C++版本专门用来解决标准意义上的等差序列之和的问题也值得借鉴一下思路技巧之处在于充分利用了结构化查询表达式的强大功能特性从而简化了很多繁琐重复劳动环节使得整体架构看起来既简洁明快又不失严谨规范程度较高易于维护扩展性强等特点明显优于其他同类产品方案之一. ```cpp #include <iostream> using namespace std; double arithmeticProgressionSum(double firstTerm,double lastTerm,int numberOfTerms){ return (firstTerm+lastTerm)*numberOfTerms/2.0; } int main(){ double start,end,diff; cout<<"Enter the starting value of AP : "; cin>>start; cout<<"\nEnter ending Value :"; cin>>end; cout<<"\nEnter Common Difference :"; cin>>diff; int terms=(end-start)/diff+1; cout<< "\nThe Sum Of The Series Is:"<<arithmeticProgressionSum(start,end,terms); return 0; } ``` 以上就是关于不同类型数列求和的一些常见算法介绍连同它们各自的源码展示希望能够帮助到正在寻找这方面知识解答的朋友群体们共同进步成长壮大起来吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值