黎曼和问题

时间:2015-02-07 05:29:52

标签: c algorithm sum

我有两个不同的程序,一个是使用for循环找到有限数的Riemann Sum并且看起来工作得很好,即使我有一些愚蠢的舍入错误我最终找到了。第二个程序使用while循环并打印迭代直到指定的值。第一次弹出的值是M = 226但是当我运行我的while循环时它显示在227.我无法理解为什么会发生这种情况。

int main()
{
    int i=1,m=0;
    double x=0.0;
    printf ("the sum of i/(4i+2)^3 as i goes from one to M, please enter a M\n");
    scanf ("%d",&m);
    for(i;i<=m;i++)
    {
        x=x+(i/pow(4*i+2,3));
    }
    printf("the sum of your series is %.9lf\n", x);

    return 0;
}

#include <stdio.h>
#include <math.h>

int main()
{
    int i=0;
    float x=0.0;
    while (x<0.011300)
    {
        x = x+((float)i/pow(4*i+2,3));
        i++;
    }
    printf("%d", i);
    return 0;
}

任何建议都会很棒。

1 个答案:

答案 0 :(得分:1)

如果你在循环后的第一个例子中添加printf("after the loop is over, the i is equal to %d\n", i);,你会发现它最后等于227,而不是226。

您做出了错误的假设,即i在执行结束时必须等于226。当上次循环条件为真时(<{1}}为真), 226,然后执行数学计算,然后增加,从而变为227.之后,在下一次迭代中循环结束,因为226 <= 226不再为真(此时i <= m为227)。