ALG6

ALG6



176 Rozdział6. Derekursywacja |

zm loc i pewne parametry wywołania parani wywof w analogicznie dzialająą procedurę, ale używającą tylko zmiennych globalnych. (Tym samym procedura P nie będzie już miała w ogóle parametrów wywołania).

Rozważmy dość ogólną formę wywołania procedury rekurencyjnej P:

void P(param_wywol) i

F(pa ram_wywol));

Pierwszy etap transformacji polega na usunięciu funkcji Fz wywołania P:

void P(param_wywol)

I

param wywol=F(param_wywol);

P(paramwywol);

Jest to najzwyczajniejsze przepisanie kodu w nieco innej postaci. Chcemy uczynić zm loc i param wywol zmiennymi globalnymi, tymczasem ulegająone podczas wywołania rekurencyjnego modyfikacji poprzez kolejny egzemplarz procedury P\ Jak sobie z tym poradzimy? Musimy bowiem w jakiś sposób zachować wartości zm loc i param wywol, aby pomimo ewentualnych zmian ich zawartości podczas wykonania procedury' P sytuacja przed i po była taka sama. Pomoże nam w tym oczywiście stos:

void F()

I

push(param_wywol) push!zm_loc)

param_wywol-F(param_wywol) ;

P (param_wywol); pop(zm_loc); pop(param wywol);

)

Zarówno zm loc jak i param wywol reprezentują listy zmiennych - to dla skrócenia

zapisu.


Wyszukiwarka

Podobne podstrony:
ALG6 166 Rozdział 6. Derekursywacji kosztuje cenny czas procesora, który dodaje się do ogólnego cza
ALG6 186 Rozdział 6. Derekursywacja D(x); while((N!=i)44(N%2>) ) l N-N/2; C (x)
ALG6 46_ _ Rozdział2. Rekurencja rekurencyjnych jest pamięcioźerność: wielokrotne wywołania rekuren
ET6 176 Rozdział 10. Polityka turystyczna Federacja Turystyki Wiejskiej „Gospodarstwa Gościnne” pow
ALG6 26 RozdziaH. Zanim wystartujemy 1.5 metody niezmienników (zwanej niekiedy metodą Floyda). Mają
ALG6 36 Rozdział 2. Rekurencja każemy. W rozdziale 9 zostanie omówiona ciekawa technika programowan
ALG6 56 Rozdział 3. Analiza sprawności algorytmów jest intuicyjnie bardzo proste, dalej będziemy uż
ALG6 66 Rozdział 3. Analiza sprawności algorytmów return pos; else    //element zost
ALG6 76 Rozdział 3. Analiza sprawności algorytmów Analogicznie dla 2 otrzymamy: Vn > 1, A(n,2) =
ALG6 86 Rozdział 4. Algorytmy sortowania zamiany sąsiadujących ze sobą elementów, a druga będzie wy
ALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunk
ALG6 106 Rozdziała. Strukturydanjt 5.1 będzie ich fuzją. Rekurencyjny zapis tego procesu jest bardz
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
ALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2
ALG6 136 Rozdział 5. Struktury danycł forfint i=0; i<4;i+~) kolejka.wstaw(tab[i)); for(i=0;
ALG6 146 Rozdział 5. Struktury danycti Jak widać, inteligentne użycie tablic może nam podsunąć możl
ALG6 156 Rozdział 5. Struktury danya Proces przechadzania się po drzewie nie jest bynajmniej zakońc
ALG8 168 Rozdział 6. Derekursywacjł Jak odróżnić powrót z procedury P, który powoduje definitywne j

więcej podobnych podstron