ALG8

ALG8



178


Rozdział 6. Derekursywacja


6.!


Dużą wadą nowej techniki będzie niemożność łatwego jej sformalizowania. Z praktycznego punktu widzenia sprawa polega na tym, iż nie jest możliwe podanie prostego przepisu, który mógłby być w miarę automatycznie8 zastosowany. Będziemy musieli zatrudnić naszą wyobraźnię i intuicję-a czasami nawet pogodzić się z niemożnością znalezienia rozwiązania. Przejdźmy jednak do szczegółów.

Przypomnijmy raz jeszcze ogólną postać procedury rekurencyjnej:

void PI(param_wywoi)

I

param_wywcl-F(param_wywol)i PI (parair. wywol);

Wiemy, że wywołanie Pfparam wywal) modyfikuje (lub może zmodyfikować) zmloc i param \rywoL Poprzednio, aby się od tego uchronić, wykorzystaliśmy zachowawcze własności stosu.

Pomysł polega na tym, aby uzupełnić procedurę PI o pewne instrukcje, które wiedząc, jak wywołanie PI (param wywal) modyfikuje zmloc i param wywol wykonałyby czynność odwrotną, tak aby przywrócić ich wartości sprzed wywołania! Inaczej mówiąc, chodzi nam o doprowadzenie programu cło postaci:

void ?2 ()

(

(1)

paran\_wywol-F(param_wywol) ;

P2;

FUNKCJA_ODWROTNA(zm_loc,pa ram_wywol};

(2)

)

Działanie owej tajemniczej funkcji odwrotnej musi być takie, aby wartości zm tac i param wywol były dokładnie takie same w punktach programu oznaczonych (I) i (2). Jak to zrobić? Ba! oto jest dopiero pytanie! Odpowiedź na nic będzie inna w przypadku każdego programu i nie pozostaje nam nic innego, jak tylko pokazać jakiś konkretny przykład.

Poniższa procedura PI liczy elementy wymyślonego ad hac ciągu matematycznego:

odwrotna.cpp

void Pltint a, ints fc)

t

if(a==0!

Co nie znaczy, że bezmyślnie!


Wyszukiwarka

Podobne podstrony:
ALG8 168 Rozdział 6. Derekursywacjł Jak odróżnić powrót z procedury P, który powoduje definitywne j
ET8 178 Rozdział 10. Polityka turystyczna •    dotychczasowy rozwój gospodarczy i tu
ALG8 18 Rozdziali. Zanim wystartujemy dopóki a>0 wykonuj; podstaw za c resztę z dzielenia a prze
ALG8 48 Rozdział 2. Rekurencja W celu dokładniejszego przeanalizowania algorytmu posłużymy się kilk
ALG8 68 Rozdział 3. Analiza sprawności algorytmów3.6. Nowe zadanie: uprościć obliczenia! Nic sposób
ALG8 78___Rozdział 3 Analiza sprawności algorytmówZad. 3-4 Proszę rozwiązać następujące równanie
ALG8 88 Rozdział 4. Algorytmy sortowania Jest chyba dość oczywiste, że wywołania rekurencyjne zatrz
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metod
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG8 128 Rozdział 5. Struktury dam i W zależności od konkretnych potrzeb można element /> fizycz
ALG8 138 Rozdział 5. Struktury danych • „prawy” potomek /-tego węzła jest „schowany” pod indeksem 2
ALG8 148 Rozdział 5. Struktury danych 148 Rozdział 5. Struktury danych „ nadchodzące" elementy
ALG8 158 Rozdział 5. Struktury{ if (p->t[rio_indeksu{słowo[i])]==NULL) test=0; // bidk odgałęzie
ALG6 166 Rozdział 6. Derekursywacji kosztuje cenny czas procesora, który dodaje się do ogólnego cza
ALG2 172 Rozdział 6. Derekursywacja Wzmiankowany powyżej „tajemniczy sposób” nie powinien stanowić
ALG4 174 Rozdział 6. Derekursywatp 6.4. to dlaczego nie wspomnieliśmy o tym wcześniej, wprowadzając
ALG2 182    Rozdział 6. Derekursywatji 6, Jest to forma niewątpliwie równoważna, cho
ALG6 186 Rozdział 6. Derekursywacja D(x); while((N!=i)44(N%2>) ) l N-N/2; C (x)

więcej podobnych podstron