[C++] Liczba PI rekurencyjnie
[C++] Liczba PI rekurencyjnie
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ć
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.
Powód: Poprawa wiadomości.
-
- 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
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.
\(\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)));
}
[C++] Liczba PI rekurencyjnie
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));
}
-
- 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
a bo 1/3==0
-- 20 lut 2012, o 10:56 --drugą formułę można zapisać np.tak:zbieżna wolniej niż pierwsza
tak czy siak, za wtrynianie tu rekurencji żółta kartka.
-- 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; }
tak czy siak, za wtrynianie tu rekurencji żółta kartka.
- Zordon
- 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
\(\displaystyle{ 1.0/3}\) daj tamdzikun77 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)); }