ALG5

ALG5



3.4. Derekursywacja z wykorzystaniem stosu 175

Metoda ta jest podzielona na dwa etapy: l zamianę zmiennych lokalnych na globalne;

2. transformację programu rekurencyjnego pozbawionego zmiennych lokalnych na postać iteracyjną.

W kolejnych paragrafach szczegółowo omówimy te dwa posunięcia.

6.4.1 .Eliminacja zmiennych lokalnych

Zanim w ogóle zaczniemy coś eliminować, warto upewnić się, czy zdajemy sobie sprawę, co będzie przedmiotem naszych zabiegów. Zmienne lokalne pełnią w języku strukturalnym rolę szczególną: umożliwiają czytelne formułowanie algorytmów i pozbaw iają tak dobrze znanego programującym w daw nym BASICu strachu przed modyfikacją jakiejś ważnej „gdzie indziej” zmiennej. Mając to na uwadze. dziwną wydawać by się mogła propozycja powrotu do tych prehistorycznych czasów, w których nie było procedur, zmiennych lokalnych, przesłaniania nazw etc. Na szczęście nikt czegoś takiego nie ma zamiaru proponować! Omawiana metoda nie jest bow iem w żadnym razie metodą programowania, lecz zwykłą techniką optymalizacyjną - a jest to istotna różnica. Wróćmy zatem do zmiennych lokalnych i zdefiniujmy sobie, co to takiego.

zmienną lokalną pewnej procedury P będziemy zwali taką zmienną, która może być modyfikowana tylko przez tę procedurę.

zmienną globalną - z punktu widzenia procedury P będzie taka zmienna, która może być zmodyfikowana na zewnątrz tej procedury.

W C++ każda zmienna zadeklarowana wewnątrz bloku ograniczonego nawiasami klamrowymi { i } jest uważana za lokalną dla tego bloku! Tak więc w poniższej procedurze mamy do czynienia z dwiema różnymi zmiennymi lokalnymi vur loc i jedną zmienną globalną var_glob:

int var_glob; void T()

I

int var_loc;

while(jakiś_warunek;

(

int var_loc;

)

)

Wiedząc już dokładnie z czym mamy do czynienia, możemy zobaczyć, w jaki sposób przekształcić rekurencyjną procedurę zawierającą zmienne lokalne


Wyszukiwarka

Podobne podstrony:
lemów i sądzimy, że metoda ta jest dosyć opłacalna. Nie robimy tego na większą skalę, ponieważ dane
42767 Pod log9 (2) Infrastruktura logistyczna Jako komplementarną do ABC, można uznać metodą XYZ. M
0 0 2 strzykawki. Metoda ta jest dość pracochłonna, lecz odzyskiwany nią DNA chi* ? rakteryzuje się
0 0 strzykawki. Metoda ta jest dość pracochłonna, lecz odzyskiwany nią DNA chi* ? rakteryzuje się wy
wymagania? bmp RT ATW    A Tk K=nT=-łRT=lłRT (3.14) Metoda ta jest bardzo dokładna, g
Zarz Ryz Finans R16I3 16. Hybrydowe papiery wartościowe 493 możliwe jest bezpośrednie sprawdzenie wy
Zdjęcie0478 Metóda podwójnego znakowania wody Metoda ta jest stosunkowo nowa. Polega ona na pomiarze
DSC00150 (25) azotu_przez__licd2e_j6A25_(=10Q/16). Metoda ta jest szeroko rozpowszechniona pomimo bł
przyczyną wystarczającą do odrzucenia studium przypadku, ponieważ metoda ta jest tylko jedną z techn
Metoda wytapianych modeli Metoda ta jest często stosowana w produkcji odlewów precyzyjnych ze stopów
Język JAVA - tablice i kolekcje obiektów Tablice Co realizuje funkcja clonej)? Metoda ta jest zdefin
Metody wyznaczania stateczności skarp Metoda B1SHOPA : Metoda ta jest pewna modyfikacja metody Felle
RehaComTrening funkcji poznawczychTrening funkcji wykonawczychZakupyEINKWskazania Metoda ta jest zal
elementy kompozycji fotograficznejQ my. Metoda ta jest może trudna ale daje dodatnie wyniki. W czasi
Metoda Holta Metoda ta jest udoskonaloną wersją wygładzania wykładniczego stosowaną, gdy metody wyma

więcej podobnych podstron