请编写一个函数fun,它的功能是:根据以下公式求X的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1) 程序运行后,如果输入精度0.0005,则程序输

/*请编写一个函数fun,它的功能是:根据以下公式求X的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1)
程序运行后,如果输入精度0.0005,则程序输出为3.14...。 */

#include <stdio.h>
double fun(double precision)
{
    double X = 0;
    double term = 1;
    double factorial = 1;
    double denominator = 1;
    int n = 1;
    while (term > precision) 
    {
        factorial *= n;
        denominator *= (2 * n + 1);
        term = factorial / denominator;
        X += term;
        n++;
    }
    X=(X+1)*2;
    return X;
}
int main(void)
{
	double precision,num;
    printf("please input precision\n");
    scanf("%lf",&precision);
    num=fun(precision);
    printf("%lf\n",num);
}

posted on 2024-06-20 23:32  wessf  阅读(34)  评论(0)    收藏  举报