ALG7
6.5. Metoda funkcji przeciwnych 177
Dokonaliśmy zatem tego, co było naszym celem: pozbawiliśmy procedurę P wszelkich parametrów lokalnych, a pomimo to jej funkcjonowanie - jak również funkcjonowanie całego programu - nie uległo zmianie. Musimy jednak pamiętać o tym, by prawidłowo zainicjować globalne już zmienne zm loc i parctm wywol właściwymi wartościami1, tak aby zachować pełną równoważność funkcjonalną naszego programu - przed i po przeróbce. Analizując jeszcze naszą metodę warto wspomnieć o nasuwającej się od razu optymalizacji. Na stosie musimy zachowywać tylko te wartości zmiennych lokalnych, które są potrzebne. W szczególności absolutnie nie ma potrzeby chować na stos tych zmiennych lokalnych, które nie są już używane po wywołaniu rekurencyjnym.
Dla ilustracji opisanego powyżej procesu przeanalizujmy raz jeszcze nasz klasyczny przykład wież Hanoi (patrz str. 170). Proste przekształcenia algorytmu prowadzą do następującej wersji:
void hanoi3()
(
while (n!=l)
(
push(n); push(a); push(b); n=n-l; b=3-a-b; hanoi3();
pop(b); pop(a); pop(n);
cout « "Przesuń dysk nr "<< n << " z " « a « " na "« b <<endl; n=n-l; a-3-ab;
I
cout << "Przesuń dysk nr 1 z " « a << " na "
<< b «endl;
I
6.5. Metoda funkcji przeciwnych
Użycie stosu - wywołań typu push i pop - jest kosztowne zarówno ze względu na czas potrzebny na obsługę tej struktury danych, jak i na pamięć niezbędną na rezerwację dostatecznie dużego stosu. Jak dużego? Problemem jest to. że nie wiemy tego a priori, co zmusza nas do założenia najgorszego przypadku. Z tego też powodu wszelkie ewentualne metody pozwalające nie korzystać ze stosu powinny być przez nas powitane jak najprzychylniej, faka metoda zostanie przedstawiona już za moment.
1
Przed pierwszym wywołaniem procedury P
Wyszukiwarka
Podobne podstrony:
ALG9 6.5, Metoda funkcji przeciwnych 179 b=l; olso ( PI(a-l,b); // tu funkcja odwrotna? b=b+a; ) SeWstawianie funkcji Wstawianie funkcji ES Wyszukaj funkcją: Przejdź Wpisz krótki opis tego, co chceszwstawokno Wstawianie funkcji Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, a nW 3 BMP Wstawianie funkcji-U-*! Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić,W 3 Wstawianie funkcji-U-*! Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, aW 3 Wstawianie funkcji-U-*! Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, awstawokno Wstawianie funkcji Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, a nWstawianie funkcji Wstawianie funkcji ES Wyszukaj funkcją: Przejdź Wpisz krótki opis tego, co chceszScannedImage 7 117 czyoh funkcji pomoonika misjonarka i opiekuna wspólnot lokalnych, co było praktyk5 19 Wstawianie funkcji-Ud Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, a nas5 19 Wstawianie funkcji-Ud Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, a nas5 19 Wstawianie funkcji-Ud Wyszukaj funkcję: Przejdź Vpisz krótki opis tego, co chcesz zrobić, a nasEX 1? Wstawianie funkcji Wyszukaj funkcję: Przejdź pisz krótki opis tego, co chcesz zrobić, a następMarcin Kropka umowy ubezpieczenia14, dokonać należy zgodnie z metodą, funkcjonalną, dominującą wpełnią funkcję oporu przeciw wtargnięciu dokonanemu przy użyciu fizycznej przemocy wspomaganej przezALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i uALG 5 11.5. Całkowanie funkcji metodą Simpsona 275 Rys. II -I. Przybliżone całkowanie funkcji. Na dawięcej podobnych podstron