gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Simulacija rekurzije dodatak u 'algoritam.txt'
[spa1-materijali.git] / kodovi / simulacija-rekurzije / algoritam.txt
1 Prvi koraci
2 ===========
4 - odrediti uslove za parametre koji ce napraviti trivijalne pozive
5 - oznaciti pozive adresama (ako ih ima vise)
6 - napraviti InfoTip klasu u kojoj su polja parametri, lokalne
7 promenljive, adresa i potencijalni dodatne "virtuelne" promenljive
10 Osnovna ideja (skica metoda za simulaciju)
11 ==========================================
13 ponavljaj {
14 // rekurzivni spust
15 dok (nijeTrivijalanSlucaj) {
16 // prepisujemo kod
17 // pamtimo na steku vrednosti parametara
18 }
20 //trivijalan slucaj
22 // povratak iz rekurzije
23 dok (stekNijePrazan I nemaNovogPoziva) {
24 // skidamo sa steka
25 // prepisujemo kod
26 }
27 } dok (stekNijePrazan)
30 Kod:
31 =====
34 InfoTip el;
35 Stek<InfoTip> s = new Stek<>();
36 // -tipicno ovde deklarisemo promenljive koje se koriste
37 // u originalnom metodu da bi bile vidljive svuda
38 // -ako metod vraca vrednost treba nam promenljiva
39 // rez odgovarajuceg tipa
41 do {
42 while (nijeTrivijalanSlucaj) {
43 // -prepisati kod iz originalnog metoda
44 // do prvog rek poziva
45 // -staviti na stek lokalne promenljive,
46 // parametre i adresu poziva
47 // -postaviti parametre kao u pozivu
48 }
49 //trivijalan slucaj
50 // -prepisujemo originalni metod
51 // -umesto "return x" pisemo "rez = z"
52 boolean nemaPoziva = true;
53 while (!s.jePrazan() && nemaPoziva) {
54 el = s.skiniVrh();
55 // -vracamo vrednosti sa steka u metod
56 // -u zavisnosti od adrese poziva nastavimo
57 // prepisivanje originalnog metoda sa
58 // tog mesta
59 // -ako se naidje na "return x" pisati "rez = x"
60 // -poziv metoda u dodeli zamenjujemo sa "rez"
61 // -ako se dodje do novog rek. poziva tada:
62 // -sacuvati na steku vrednosti
63 // -postaviti parametara kao u pozivu
64 // -pisemo "nemaPoziva = false;"
65 }
66 } while (!s.jePrazan());
68 // -ako metod vraca vrednost pisemo
69 // "return rez"
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner