Prvi koraci =========== - odrediti uslove za parametre koji ce napraviti trivijalne pozive - oznaciti pozive adresama (ako ih ima vise) - napraviti InfoTip klasu u kojoj su polja parametri, lokalne promenljive, adresa i potencijalni dodatne "virtuelne" promenljive Osnovna ideja (skica metoda za simulaciju) ========================================== ponavljaj { // rekurzivni spust dok (nijeTrivijalanSlucaj) { // prepisujemo kod // pamtimo na steku vrednosti parametara } //trivijalan slucaj // povratak iz rekurzije dok (stekNijePrazan I nemaNovogPoziva) { // skidamo sa steka // prepisujemo kod } } dok (stekNijePrazan) Kod: ===== InfoTip el; Stek s = new Stek<>(); // -tipicno ovde deklarisemo promenljive koje se koriste // u originalnom metodu da bi bile vidljive svuda // -ako metod vraca vrednost treba nam promenljiva // rez odgovarajuceg tipa do { while (nijeTrivijalanSlucaj) { // -prepisati kod iz originalnog metoda // do prvog rek poziva // -staviti na stek lokalne promenljive, // parametre i adresu poziva // -postaviti parametre kao u pozivu } //trivijalan slucaj // -prepisujemo originalni metod // -umesto "return x" pisemo "rez = z" boolean nemaPoziva = true; while (!s.jePrazan() && nemaPoziva) { el = s.skiniVrh(); // -vracamo vrednosti sa steka u metod // -u zavisnosti od adrese poziva nastavimo // prepisivanje originalnog metoda sa // tog mesta // -ako se naidje na "return x" pisati "rez = x" // -poziv metoda u dodeli zamenjujemo sa "rez" // -ako se dodje do novog rek. poziva tada: // -sacuvati na steku vrednosti // -postaviti parametara kao u pozivu // -pisemo "nemaPoziva = false;" } } while (!s.jePrazan()); // -ako metod vraca vrednost pisemo // "return rez"