[C++] Liczba PI rekurencyjnie

asiunia92
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 19 lut 2012, o 18:22
Płeć: Kobieta
Lokalizacja: Staw

[C++] Liczba PI rekurencyjnie

Post autor: asiunia92 »

Hejka! Muszę napisać dwa programy które rekurencyjnie liczą przybliżoną wartość liczby PI

Pierwszy program ma liczyć sumę \(\displaystyle{ \frac{1}{3} + \frac{1}{5 \cdot 7} + \frac{1}{9 \cdot 11} + ... \approx \frac{ \pi }{8}}\)

Drugi \(\displaystyle{ \frac{2 \cdot 4 \cdot 4 \cdot 6 \cdot 6 \cdot 8 ...}{3 \cdot 3 \cdot 5 \cdot 5 \cdot 7 \cdot 7 ... } \approx \frac{ \pi }{4}}\)

Liczę na szybką i fachową pomoc, bo nie mam pojęcia jak się za to zabrać
Ostatnio zmieniony 19 lut 2012, o 22:48 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++] Liczba PI rekurencyjnie

Post autor: bartek118 »

Na przykład, pierwszym sposobem, musisz zaimplementować rekurencję:

\(\displaystyle{ a_{n+1} = a_{n} + \frac{1}{(1+4n)(3+4n)} \\
a_{1} = \frac{1}{3}}\)


Czyli np.

Kod: Zaznacz cały

double Pi(unsigned int n)
{
if(n==1) return 1/3;
return Pi(n-1)*(1/((4n-3)*(4n-1)));
}
Grzesio_
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 23 gru 2011, o 22:59
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 3 razy

[C++] Liczba PI rekurencyjnie

Post autor: Grzesio_ »

czy rekurencja tutaj to tylko zły przykład czy przykład naganny?
dzikun77
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 6 lis 2011, o 02:10
Płeć: Kobieta
Lokalizacja: gda

[C++] Liczba PI rekurencyjnie

Post autor: dzikun77 »

dlaczego wychodzi caly czas 0 ?? i wgl nie powinno byc tak?

Kod: Zaznacz cały

double pi(unsigned int n)
{ if(n==1) return 1/3;
  return pi(n-1) + 1/((4*n-1)*(4*n-3));
}
Grzesio_
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 23 gru 2011, o 22:59
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 3 razy

[C++] Liczba PI rekurencyjnie

Post autor: Grzesio_ »

a bo 1/3==0
-- 20 lut 2012, o 10:56 --drugą formułę można zapisać np.tak:

Kod: Zaznacz cały

double pi2(int n){
        double a = 4*n*(n+1);
        a = a/(a+1);
        if( n>1 ) return a * pi2(n-1);
        return a; }
zbieżna wolniej niż pierwsza
tak czy siak, za wtrynianie tu rekurencji żółta kartka.
Awatar użytkownika
Zordon
Użytkownik
Użytkownik
Posty: 4977
Rejestracja: 12 lut 2008, o 21:42
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 75 razy
Pomógł: 910 razy

[C++] Liczba PI rekurencyjnie

Post autor: Zordon »

dzikun77 pisze:dlaczego wychodzi caly czas 0 ?? i wgl nie powinno byc tak?

Kod: Zaznacz cały

double pi(unsigned int n)
{ if(n==1) return 1/3;
  return pi(n-1) + 1/((4*n-1)*(4*n-3));
}
\(\displaystyle{ 1.0/3}\) daj tam
Grzesio_
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 23 gru 2011, o 22:59
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 3 razy

[C++] Liczba PI rekurencyjnie

Post autor: Grzesio_ »

to za mało
ODPOWIEDZ