计算序列 1 + 1/3 + 1/5 + ... 的前N项之和?

这是我写的代码,结果sum=2.224353

#include<stdio.h>
int main()
{
    int N;
    scanf("%d",&N);
    int i;
    double sum = 0;
    for(i=1;i<=N;i=i+2)
    {
        sum = sum + 1.0/i;
    }
    printf("sum = %.6f",sum);
    return 0;
}

这是正确答案,结果是2.549541.同样是奇数,2*I-1和I=I+2有什么区别吗?求帮助

#include<stdio.h>
int main()
{
    int N;
    scanf("%d",&N);
    int i;
    double sum = 0;
    for(i=1;i<=N;i++)
    {
        sum = sum + 1.0/(2*i-1);
    }
    printf("sum = %.6f",sum);
    return 0;
}
阅读 12.7k
3 个回答

你手动模拟下loop中i的变化, N取5:
前者是1, 3, 5
后者是1, 3, 5, 7, 9.
二级即视感.

好标准的二级题……
循环变量递增变了,条件还是i<=N 怎么可能不错

题目是求N项的和1 + 1/3 + 1/5 + ...(是总共N个数字的和),而你的答案是求的1 + 1/3 + 1/5 + 1/n的和(是(n+1)/2个数字的和)