ALG6
186 |
|
Rozdział 6. Derekursywacja |
|
D(x); |
while((N!=i)44(N%2>) |
|
) |
l
N-N/2; C (x) ; |
|
|
if(N==l)
goto koniec? N=N+1;
B {x) ; |
}while(p!=1)i
)
Dla zilustrowania metody rozważmy jeszcze raz problem wież Hanoi, przedstawiony na stronie 170.
Mając do dyspozycji metodę funkcji przeciwnych (patrz §6.5) łatwo dojdziemy do następującej wersji zaproponowanej tam procedury:
luwoijt.cpp I
void hanoi()
<
if (n!=1)
I
n—; b=3-a-b; hanoi();
n4 + ; b-3-a-b;
cout << "Frzesuh dysk nr ”<<n<< ” z ” << a << " na "«b<<endl; n--; a=3-a-b; hanoi () ; n++; a=3-a-b;
I
else
cout << "Przesuń dysk nr ”<<n<< " z " << a « " na " <■< b << endl; t
Zauważmy, żc instrukcje n++ i n— anulują się wzajemnie, mogą być zatem po prostu usunięte.
Jeśli poddamy procedurę hanoi przeróbce na wersję iteracyjną, powinniśmy otrzymać:
void hanoi_iter()
I
int M=l; do
Wyszukiwarka
Podobne podstrony:
ALG6 166 Rozdział 6. Derekursywacji kosztuje cenny czas procesora, który dodaje się do ogólnego czaALG6 176 Rozdział6. DerekursywacjaET6 186 Rozdział 11. Turystyka międzynarodowa Generalnie można stwierdzić, że turystyka międzynarodALG6 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 programowanALG6 46_ _ Rozdział2. Rekurencja rekurencyjnych jest pamięcioźerność: wielokrotne wywołania rekurenALG6 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 zostALG6 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 wyALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunkALG6 106 Rozdziała. Strukturydanjt 5.1 będzie ich fuzją. Rekurencyjny zapis tego procesu jest bardzALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czyALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2ALG6 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żlALG6 156 Rozdział 5. Struktury danya Proces przechadzania się po drzewie nie jest bynajmniej zakońcALG8 168 Rozdział 6. Derekursywacjł Jak odróżnić powrót z procedury P, który powoduje definitywne jwięcej podobnych podstron