7-15 计算圆周率

根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
​2​​π​​=1+​3​​1​​+​3×5​​2!​​+​3×5×7​​3!​​+⋯+​3×5×7×⋯×(2n+1)​​n!​​+⋯
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
Note:做个简单的记录就行了,函数不要写错了,不用担心内存的问题,意思就是全用double吧,int,double交叉反而容易出错。

#include
#include
double jiechen(double n)//计算阶乘
{
    if (n==1 || n==0) return 1;
    else return n*jiechen(n-1);
}
double jishu(double m)//计算奇数的积
{
    if (m==1) return 1;
    else return m*jishu(m-2);
}
int main()
{
    double N, A, Z, M, sum=0;//全用double定义以免出错
    double n = 0, m=1;//初始化看情况写在循环内还是外
    scanf("%lf", &N);
    do{
        Z = jiechen(n);//每一项的分子
        M = jishu(m);//每一项的分母
        A = Z/M;
        sum += A;
        n += 1;
        m += 2;
    }while (A>N);
    printf("%.6f", 2*sum);//记得题目的要求,是pai/2等于后面的等式,所以累和后要乘以二才得pai
    return 0;
}

你可能感兴趣的:(PTA基础编程题目集)