求给定交错序列前n项的和: 输入一个正整数n,输出n项交错序列的和。使用for循环 测试用例:输入4,得到0.361905。输入10,得到0.380230。
时间: 2024-10-15 09:27:15 浏览: 55
C++算法:第 N 位数字原理、源码、测试用例
交错序列指的是从正负交替出现的数列,如著名的交错级数,如莱布尼茨公式中的π/4 = 1 - 1/3 + 1/5 - 1/7 + ...。要计算给定n项的交错序列和,我们可以利用交错级数的部分和公式。对于奇数位置(i=1, 3, 5, ...),值为1;对于偶数位置(i=2, 4, 6, ...),值为-1/n^2。这个序列的前n项和可以用以下公式近似:
S_n ≈ (1 - (-1)^n) / 2 * n / (1 + n)
这里我们使用for循环来计算每一项并累加。下面是对应的C语言代码实现:
```c
#include <stdio.h>
double sum_of_interleaved_sequence(int n) {
if (n <= 0) {
printf("Error: Input should be a positive integer.\n");
return 0;
}
double total = 0;
for (int i = 1; i <= n; i++) {
// 如果是奇数位置,添加1;如果是偶数位置,添加-1/n^2
total += i % 2 == 0 ? -1.0 / pow(i, 2) : 1;
}
// 使用交错级数公式修正总和
total *= (1 - ((-1) ^ n)) / 2;
return total;
}
int main() {
int n_test_1 = 4;
double result_test_1 = sum_of_interleaved_sequence(n_test_1);
printf("For input 4, the sum is approximately %.9f\n", result_test_1);
int n_test_2 = 10;
double result_test_2 = sum_of_interleaved_sequence(n_test_2);
printf("For input 10, the sum is approximately %.9f\n", result_test_2);
return 0;
}
```
阅读全文