用c语言输入一个正整数n,求数列 1 + 1/2 - 2/3 + 3/5 - 5/8 + 8/13 - ..........的前 n 项和。
时间: 2023-12-12 22:58:37 浏览: 82
数列前n项和的求和公式.doc
```c
#include <stdio.h>
int main()
{
int n;
double a = 1, b = 1, c = 0, sum = 1;
printf("请输入正整数n:");
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
c = a + b;
if (i % 2 == 0) {
sum -= c / (b + c);
} else {
sum += c / (a + c);
}
a = b;
b = c;
}
printf("前%d项和为:%.6lf", n, sum);
return 0;
}
```
解释:
此题需要用到斐波那契数列和交错求和的知识,即:
F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2 (n ≥ 2)
1 - 1/2 + 2/3 - 3/5 + 5/8 - 8/13 + ... = F0/F1 - F1/F2 + F2/F3 - F3/F4 + F4/F5 - F5/F6 + ...
所以,我们可以使用循环来计算每一项的值,然后根据奇偶性来确定符号,并将其加入到总和中。在计算每一项时,需要用到斐波那契数列中相邻两项的和。
代码中,我们使用 a、b、c 分别表示相邻的三项,sum 为总和。循环从第二项开始,每次计算当前项 c,根据奇偶性决定符号并将其加入到总和中。然后将 b 赋值给 a,将 c 赋值给 b,继续循环计算下一项。最终输出总和。
阅读全文