ALG2

ALG2



42 Rozdział 2. Rekurencja 2.

m.in. wartości zmiennych tego poziomu (tzw. kontekst). Co więcej, odtwarzanie kontekstu już samo w sobie zajmuje cenny czas procesora, który mógłby być wykorzystany np. na inne obliczenia...

Czytelnik domyśla się już zapewne, że program rekurencyjny „z parametrem dodatkowym” robi to wszystko nieco wydajniej. Ponieważ parametr dodatkowy służy do przekazy'wania elementów wyniku końcowego, dysponując nim nie ma potrzeby przekazywania wyniku obliczeń do góry, „piętro po piętrze”. Po prostu w momencie, w którym program stwierdzi, że obliczenia zostały zakończone, procedura wywołująca zostanie o tym poinformowana wprost z ostatniego aktywnego poziomu rekurencji. Co za tym wszystkim idzie, nie ma absolutnie żadnej potrzeby zachowywania kontekstu poszczególnych poziomów pośrednich, liczy się tylko ostatni aktywny poziom, który dostarczy wynik i basta!

2.7. Myślenie rekurencyjne

Pomimo oczywistych przykładów na to, że rekurencja jest dla człowieka czymś jak najbardziej naturalnym, niektórzy mają pewne trudności z używaniem jej podczas programowania. Nieumiejętność „wyczucia” istoty' tej techniki programowania może wynikać z braku dobrych i poglądowych przykładów na jej wykorzystanie. Idąc za tym stwierdzeniem, postanowiłem wybrać kilka prostych programów rekurencyjnych, generujących znane motywy graficzne - ich dobre zrozumienie będzie wystarczającym testem na oszacowanie swoich zdolności myślenia rekurencyjnego (ale nawet wówczas wykonanie zadań zamieszczonych pod koniec rozdziału będzie jak najbardziej wskazane...).

2.7.1.Spirala

Zastanówmy się. jak można narysować rekurencyjnie jednym „pociągnięciem” kreski rysunek 2-6.

Parametrami programu są:

•    odstęp pomiędzy liniami równoległymi: cilpha\

   długość boku rysowanego w pierwszej kolejności: Ig.

Algorytm iteracyjny byłby również nieskomplikowany (zwykłą pętla), ale załóżmy, że zapomnimy chwilowo o jego istnieniu i wykonamy to samo rekurencyjnie. Istota rekurencji polega głównie na znalezieniu właściwej dekompozycji problemu. Tutaj jest ona przedstawiona na rysunku i w związku z tym ewentualne przetłumaczenie jej na program w C++ powinno być znacznie ułatwione.


Wyszukiwarka

Podobne podstrony:
ALG2 32 Rozdział 2. Rekurencja Wyżej podaliśmy warunki pozytywnego zakończenie programu. W przypadk
ALG2 52 Rozdział 2. RekurenZad. 2-4Oto jedno z możliwych rozwiązań: trójkąty ,cpp double y) void nu
ALG2 132 Rozdział 5. Struktury da //"w" zostanie "załadowane" wartością zdjętą
80766 skanuj0077 (42) ROZDZIAŁ 3POCZUCIE WŁASNEJ WARTOŚCI Samoocena związana jest z poczuciem wartoś
ET2 42 Rozdział 3. Funkcje turystyki Dysfunkcje pojawiające się w sferze gospodarczej są związane z
ALG2 22 Rozdział 1. Zanim wystartujemy programowania nic znikły bynajmniej z horyzontu: Dijkstra, H
ALG0 30 Rozdział 2. Rekurencja 2.2 potwornie skomplikowany: klocków jest cala masa i niespecjalnie
ALG6 36 Rozdział 2. Rekurencja każemy. W rozdziale 9 zostanie omówiona ciekawa technika programowan
Alg4 44 Rozdział2. Rekurencja ( if (lg>0) ( lineto(x+lg,y); lineto(x+lg,y+lg); lineto
ALG6 46_ _ Rozdział2. Rekurencja rekurencyjnych jest pamięcioźerność: wielokrotne wywołania rekuren
ALG8 48 Rozdział 2. Rekurencja W celu dokładniejszego przeanalizowania algorytmu posłużymy się kilk
ALG0 50_ _Rozdział2. Rekurencja Odpowiadający temu rozumowaniu program przedstawia się
ALG2 52 Rozdział 3. Analiza sprawności algorytmów Rys. 3 -
ALG2 72 Rozdział 3. Analiza sprawności algorytmówn o) = i, i = A + O, A =    1. Po t
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za

więcej podobnych podstron