ALG5
3.7. Analiza programów rekurencyjnych 75
otrzymując w efekcie:
=26„_, +3log, 3} _
frównanie liniowe. bo=0 J
Zadanie w tej postaci nadaje się już do rozwiązania! Po dokonaniu niewielkich obliczeń możemy otrzymać: b„=(2„-l)\og^J, co ostatecznie daje
o _ _ ,2»-l
c* l i “ J •
3.7.5.Funkcja Ackermanna, czyli coś dla smakoszy
Gdyby inale dzieci znały się odrobinę na informatyce, to rodzice na pewno by je straszyli nie kominiarzem, ale funkcją Ackermanna. Jest to wspaniały przykład ukazujący, jak pozornie niegroźna „z wyglądu” funkcja rckurcncyjna może być kosztowna w użyciu. Spójrzmy na listing:
a.cpp
int A(int n, int p)
I
if (n~0) return 1;
if ((p==0)Si(n>=l)) if (n==i) return 2; else
return n+2; if ( (p>=l)&&(n>=l))
return A(A(n-',p),p-1);
I
Pytanie dotyczące tego programu brzmi: jaki jest powód komunikatu Slack overflow! (ong. przepełnienie stosu) podczas próby wykonania go? Komunikat ten sugeruje jednoznacznie, iż podczas wykonania programu nastąpiła znaczna ilość wywołań funkcji Ackermanna. Jak znaczna, okaże się już za chwilę...
Pobieżna analiza funkcji A prowadzi do następującego spostrzeżenia:
V« > 1, A(n. 1) = A(A(n-1,1),0) = A(n-1,1) + 2,
co daje natychmiast
Vm > I, /4(m,I) = 2«.
Wyszukiwarka
Podobne podstrony:
ALG1 3.7. Analiza programów rekurencyjnych 71 Cały ten bagaż wzorów był naprawdę niezbędny! Dla zilALG3 3.7. Analiza programów rekurencyjnych 737X1) = 1 + 1 = 2, -2 + 7 T(n) = 1 + 1 + 71 Widać już,ALG9 3.7. Analiza programów rekurencyjnych 69 W tym paragrafie przedstawiona zostanie metoda mającaALG5 35 2.4. Niebezpieczeństwa rekurencji2.4.1.Ciąg Fibonacciego Naszym pierwszym zadaniem jest napALG1 2.B. Typy programów rekurencyjnych 41 if (x==0) return 1; else return x*silnial !x-l); t Nie j-75- Takiej analizy programu i jego realizacji dokonał:ar kilka razy. Po przerobieniu określonej częALG2 32 Rozdział 2. Rekurencja Wyżej podaliśmy warunki pozytywnego zakończenie programu. W przypadkALG3 2.3. Jak wykonują się programy rekurencyjne? 332.3. Jak wykonują się programy rekurencyjne? DoALG6 36 Rozdział 2. Rekurencja każemy. W rozdziale 9 zostanie omówiona ciekawa technika programowanALG5 2.7. Myślenie rekurencyjne 45 Przypadkiem elementarnym będzie tutaj narysowanie jednej pary kwALG0 50_ _Rozdział2. Rekurencja Odpowiadający temu rozumowaniu program przedstawia sięALG5 3.1. Dobre samopoczucie użytkownika programu 55 Wcale nie jest aż tak dobrze z szybkością wspóALG5 Rozdział 6Derekursywacja Podjęcie tematu przekształcania algorytmów rekurencyjnych na ich postALG5 7,3. Transformacja kluczowa 195 tylko, aby jako wynik otrzymać pewną liczbę, którą można późnioooooooo Analiza statyczna konstrukcji przy użyciu MES #000000000Etapy analizy w programie MES UżyciPodstawy chemii, ćwiczenia laboratoryjne7 w wyniku analizy, tak aby nie otrzymać zbyt małej lub dużwięcej podobnych podstron