请使用递归算法求下列序列的前n项之和。 1 + 1/2 - 1/3 + 1/4 -1/5 ...... 输入: n 输出: 序列的前n项和(精确到小数点之后第6位)
时间: 2023-10-18 16:04:16 浏览: 129
CC++全排列..1--n的全排列以及字符串的全排列
以下是使用递归算法求解该序列前n项之和的C语言代码:
```c
#include<stdio.h>
#include<math.h>
double sum(int n)
{
if(n==1) // 递归结束条件
return 1.0;
else if(n%2==0)
return sum(n-1) - 1.0/n; // 奇数项
else
return sum(n-1) + 1.0/n; // 偶数项
}
int main()
{
int n;
double s;
printf("请输入n的值:");
scanf("%d",&n);
s = sum(n);
printf("序列的前%d项之和为:%.6f\n",n,s);
return 0;
}
```
思路:通过递归,将序列的前n项之和不断拆分成前n-1项之和,并在序列的第n项上加上或减去1/n,最终得到序列的前n项之和。
需要注意的是,在递归结束时,需要返回1.0,而不是0。因为序列的第一项是1,而非0。
阅读全文