如果先不考虑正负号,一律按照正号对待,那么该式就变为
1+1/2+1/3+1/4+1/5+1/6……
分子不变,分母依次加1;
设s为其前n项和,i为第几项,表达式即为 s += 1/i。
而本题中,分母为偶数前的符号为符号,也可以通过判断 i % 2 ==0来确定符号。
代码如下:
#include"stdio.h"
int main()
{
int i , n , flag = 1;
float s = 0;
printf("put in n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s += 1.0 / i * flag;
flag *= - 1;
}
/*if(i % 2 == 0)
{
s-=1.0/i;
}
else
{
s+=1.0/i;
}*/
printf("%f\n", s);
return 0;
}
运行结果为:
put in n:2
0.500000
put in n:3
0.833333
用函数进行封装:
#include<stdio.h>
float getsum(int n)
{
int flag = 1;
float result = 0;
for(int i = 1 ; i <= n ; i++){
result += 1.0 / i * flag;
flag *= -1;
}
return result;
}
int main()
{
int n = 0;
scanf("%d",&n);
printf("%f\n",getsum(n));
return 0;
}
结果展示:
3
0.833333