C:按给定标准查找序列的成员

时间:2015-05-14 15:52:04

标签: c math

我需要以下C程序的帮助:

对于表示精度(EPS值)的输入值double,打印序列的第一个成员以便声明

abs(a(n)-a(n-1))<EPS

是真的。

序列a(n)由:

给出
a(n)=(1-1/2!)(1+1/3!)...(1+(-1)^n/(n+1)!)

我使用了这个等式:a(n)-a(n-1)=((-1)^n*(n+2))/(n+1)!

我的代码没有给我任何输出:

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

int fact(int n)//function to find factorial of 'n'
{
 int i,f=1;
 for(i=1;i<=n;i++)
        f=f*i;
 return f;
}

int main()
{
    double an=0.5,ap=2,EPS;//an is a_new, ap is a_previous
    int n=1;
    printf("EPS=");
    scanf("%lf",&EPS);
    do
    {
     int f=fact(n+1);
     n=n+1;
     an=ap+((double)(pow(-1.0,n)*(n+2)))/f;
    }
    while(fabs(an-ap)>EPS);
    printf("%lf",an);
    return 0;
}

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

此代码至少有几个问题,

1. ap未初始化

  1. 您应该使用新的f更新n,但现在f = 2

  2. 也在while循环上,an-as应该是'an-ap'