Liczba wallisa c++

0

Witam!

Mam do napisania program wyznaczającą przybliżoną wartość liczby PI przy pomocy iloczynu n
Wzór wygląda tak:
title

Nie wiem co robie źlę, gdy wpiszę np 5, to program zwraca 2.14214e-305

double wallis(double n)
{
    double wynik;
    for (double k = 1; k < n; k++)
    {
        double licznik = (2 * k) * (2 * k);
        double mianownik = (2 * k - 1) * (2 * k - 1);
        wynik *= licznik / mianownik;
    }
    return 2 * wynik;
}

int main()
{

    double n;
    cin >> n;
    cout << wallis(n);
    return 0;
}
2

Jaką wartość ma zmienna wynik na samym początku działania Twojej funkcji? (tj. przed pierwszym wynik *= ...)

2
  • nie ustalasz wartości wynik
  • mianownik to mnożenie 2n-1 · 2n + 1
  • niepotrzebnie parametrem funkcji jest double. Iteracje mają wartości dyskretne
double wallis(int n)
{
    double wynik=1;
    for (int k = 1; k < n; k++)
    {
        double licznik = (2 * k) * (2 * k);
        double mianownik = (2 * k - 1) * (2 * k + 1);
        wynik *= licznik / mianownik;
    }
    return 2 * wynik;
}

int main()
{
    DBG(wallis(5000));
    return 0;
}
wallis(5000)                                                3.14144

1 użytkowników online, w tym zalogowanych: 0, gości: 1