簡體   English   中英

在 C 中計算 Pi 的函數

[英]Function to calculate Pi in C

我正在嘗試編寫一個公式,其中用戶輸入一個數字n來使用Pi= n^2/(n-1)(n+1)計算Pi 但由於某種原因,輸出是錯誤的。 我不知道是我的數學錯了還是函數有問題。

這是代碼:

#include <stdio.h>
#include <math.h>
double pi_array (int n)
{
    int i;
    double a;
    if (n%2==0)
    {
        for (i=2;i<=n;i+=2)
        {
            a=pow(n,2)/((n-1)*(n+1));
        }
    }
    return a;
}

double pi_value (int n)
{
    int i;
    double pi;
    for (i=0;i<=n;i++)
    {
       pi=pi_array(n);
    }
    return pi;
}

void main()
{
    int n;
    scanf("%d",&n);
    printf ("%lf\n", pi_value(n));
}

就像@Mat 指出的那樣,在這部分代碼中:

   for (i=2;i<=n;i+=2)
    {
        a=pow(n,2)/((n-1)*(n+1));
    }

它一次又一次地進行相同的計算,因為n不會改變它的值。 即使對於所有迭代pow(n,2)/((n-1)*(n+1))答案pow(n,2)/((n-1)*(n+1))保持不變。

另外,附帶說明一下,您使用什么公式來計算答案? 如果你把n = 4 ,你得到的值為 16/15,等於 1.0667。 對於n = 5 ,答案是 1.041667。 它們顯然不等於pi 我認為這個公式本身可能是錯誤的。 您可以在MathStackExchange上發布有關公式的問題,以了解確切的公式是什么,然后稍后在 C 中實現它:)。

最好的事物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM