Šta je novo?

Rekurzija

VUCKO-91

Slavan
Učlanjen(a)
21.08.2008
Poruke
330
Poena
319
Imam problem, uskoro polazem zadnji kolokvijum iz programskog jezika C pa mi treba pomoc.
Nije mi jasna mogucnost da u definicji neke funkcije pozovem tu funkciju... CItao sam primere na netu za faktorijel, itd...

Imam ovaj primer koji simulira rad steka preko spregnutih listi:
#include <stdio.h>
#include <stdlib.h>

typedef int TIP;
typedef struct cvor_st
{
TIP inf;
struct cvor_st *sledeci;
} SCVOR;

void ispisi_stek(SCVOR *vrh)
{
if (vrh != NULL)
{
printf("element: %i\n", vrh->inf);
ispisi_stek(vrh->sledeci);
}
}

void obrisi_stek(SCVOR *vrh)
{
if (vrh!= NULL)
{
printf("brisemo element: %i\n", vrh->inf);
obrisi_stek(vrh->sledeci);
free(vrh);
}
}

void push(TIP inf, SCVOR **vrh)
{
SCVOR *novi;
novi = (SCVOR *)malloc(sizeof(SCVOR));
novi->inf = inf;
novi->sledeci = *vrh;
*vrh = novi;
}

TIP pop(SCVOR **vrh)
{
SCVOR *tmp;
TIP pod;

if (*vrh == NULL)
return -1;
/* pokupimo informaciju sa vrha steka */
pod = (*vrh)->inf;
/* zapamtimo element sa vrha steka da bismo
ga obrisali nakon prevezivanja */
tmp = *vrh;
/* prevezemo (preskocimo) element sa vrha */
*vrh = tmp->sledeci;
/* obrisemo element sa vrha */
free(tmp);
return pod;
}

TIP top(SCVOR *vrh)
{
if (vrh == NULL)
return -1;
return vrh->inf;
}

int main(void)
{
/* vrh steka je lokalna promenljiva */
SCVOR *vrh;
TIP i, odg;

/* inicijalizacija praznog steka*/
vrh = NULL;

do {

printf("\n Opcije:\n");
printf("\t1. Smestanje na stek - push.\n");
printf("\t2. Skidanje sa steka - pop.\n");
printf("\t3. Pristup prvom elementu - top.\n");
printf("\t4. Prikaz sadrzaja celog steka.\n");
printf("\t5. Kraj.\n");
printf("\n\t>> ");
scanf("%d", &odg);

switch( odg ) {
case 1: printf("Unesite pozitivan ceo broj: ");
scanf("%d", &i);
push(i, &vrh);
break;
case 2: i = pop(&vrh); /* pokupimo jedan element sa steka */
printf("Skinuli sa steka: %i\n", i);
break;
case 3: printf("Na vrhu steka je %i\n", top(vrh)); /* pogledamo sta je na vrhu steka */
break;
case 4: ispisi_stek(vrh); /* ispisemo sadrzaj stabla*/
break;
}
} while ( odg!=5 );

/* obrisemo stek */
obrisi_stek(vrh);
vrh = NULL;

return 0;
}


Konkretno mi nisu jasni ti delovi gde se koristi rekurzija u definiciji strukure cvor_st pa se u toj samoj strukturi koristi njeno ime i definise pokazivac na tu strukturu. NIje mi jasno kako je to moguce?

Takodje kod brisanja steka, nije mi jasno, kad u tom if-u uopste stigne funkcija free da se pozove?

Molim za pomoc!
 
termin 'rekurzija' se ne koristi za strukture podataka, mada bi teoretski moglo da se prica o tome. uglavnom se misli na situacije gde funkcija poziva samu sebe. obicno u formatu:
Kod:
ispadanje iz rekurzije (uslov po kome se odlucuje da li ce funkcija "ispasti" i samim tim izbeci rekurzivni poziv nize)
"meso"
rekurzivni poziv

funkcija obrisi_stek() u tvom primeru je rekurzivna. ispada kada prosledjena struktura ne postoji (njena adresa je NULL). u tom slucaju nista se ne desava, pa samim tim ni rekurzivni poziv.
ako nije NULL izvrsice se rekurzivni poziv sa sledecim elementom liste kao argumentom. i tako sve dok taj sledeci ne bude NULL. onda ce pozivni stek da pocne da se odmotava i izvrsice se "meso", tj. poziv free() funkcije. elementi liste ce biti brisani od poslednjeg do prvog kako se stek odmotava.

primetices da u tom primeru rekurzivni poziv ide pre "mesa". to je nekada neophodno, a nekada stvar izbora. ovde je bila stvar izbora, mada nije nemoguce da je ovako efikasnije iz nekog opskurnog razloga.
 
Poslednja izmena:
Kontam sad otprilike... Znaci, otprilike, sta se tu desava: On kad izvrsava ovaj if, on prvo ispise printf, onda uzme adresu od sledeceg elementa i smesti je negde u memoriji, obrise sadasnji vrh steka, pa tek onda tu adresu salje kao argument funkciji obrisi_stek, sve dok adresa vrha steka ne postane NULL i tu prekida rekurziju?
 
ne bas... pre brisanja postoji rekurzivni poziv i funkcija ne radi nista dok se taj poziv ne zavrsi. ono sto se "smesta negde u memoriju" je adresa povratka za funkcije. tj. na pozivni (call) stack. al' to ti je mozda previse za sad.
valjalo bi da malo poboljsas poznavanje rada samih funkcija pre nego sto se bacis na rekurzivne.

a njih ces mozda najlakse da shvatis kao one ruske lutkice babuske, sto idu jedna u drugu. kad otvoris prvu (najvecu) to je kao prvi poziv rekurzivne funkcije. i onda ides redom i otvaras (pozivas) dok ne moze vise da se otvori. ali kad hoces da ih zatvoris (kraj rada funkcije) moras unazad, od manje ka vecoj. a izmedju svakog otvaranja i zatvaranja mozes da uradis nesto. u tvom primeru si pre svakog zatvaranja obrisao strukturu.
 
Kod:
typedef int TIP;

typedef struct cvor_st
{
    TIP inf;
    struct cvor_st *sledeci;
} SCVOR;

Kao što ti je Bahati rekao ovo nije rekurzija. Jednostavno, dozvoljeno je u definiciji strukture ili klase imati pointer na taj isti tip strukture (klase). To je jedini slučaj da možeš da koristiš neki tip pre nego što je završena njegova definicija.

Ovde ne postoji nikakva rekurzija, pošto se ništa rekurzivno ne poziva. Gledaj to ovako - struktura cvor_st se sastoji od 4 bajta u kojima se nalazi promenljiva tipa int i još 4 bajta u kojima se nalazi jedan pokazivač za koji kompajler pretpostavlja da pokazuje na promenljivu tipa struct cvor_st. Tačan broj bajtova zavisi od arhitekture računara i kompajlera, ali shvataš poentu.



Kod:
void obrisi_stek(SCVOR *vrh)
{
    if (vrh!= NULL)
    {
        obrisi_stek(vrh->sledeci);
        printf("brisemo element: %i\n", vrh->inf);
        free(vrh);
    }

    return;
}

Najjasnije će ti biti ako pustiš ovo u debugeru i izvršavaš liniju po liniju. Pretpostavljam da ti je jasno da se sve ovo izvršava u jednom tredu, da imaš samo jedan instruction pointer, tj. da se u jednom trenutku izvršava samo jedna instrukcija.

Ova funkcija će sve dok ne stigne do kraja steka (kada je vrh == NULL) pozivati ponovo samu sebe, ali sa drugim parametrom. Zamisli da se svaki put kada je pozoveš kreira nova "instanca" funkcije ali koja ima drugu vrednost promenljive vrh. Kada rekurzija stigne do kraja steka ti ustvari imaš onoliko "instanci" funkcije koliko si elemenata imao na steku.
Kada se desi da je promenljiva vrh == NULL u toj instanci se neće ponovo pozvati funkcija nego će izvršavanje da se nastavi, tj. odmah će se izaći iz te instance funkcije. Izvršavanje programa se nastavlja na liniji posle poziva funkcije - tj. u prethodnoj instanci (onoj koja je pozvala ovu sledeću iz koje smo izašli): printf("brisemo element: %i\n", vrh->inf); free(vrh); i zatim izlazimo i iz te instance. Sada se izvršavanje opet nastavlja posle poziva funkcije u prethodnoj instanci... i tako do kraja, tj. do prvog poziva funkcije.

"Instanca" je pod znakom navodnika pošto se ne kreira bukvalno instanca funkcije. Kod funkcije stoji na jednom mestu u memoriji, a svakim novim pozivom funkcije se na call stacku napravi stack frame sa lokalnim promenljivima i parametrima za tu "instancu". Pročitaj malo o call stack-u i mehanizmu pozivanja funkcija, ima po netu gomila tekstova.

Ovo objašnjenje je verovatno prilično nejasno, tako da debugger u ruke i izvršavaj komandu po komandu. 😀
 
Poslednja izmena:
Rekurzija radi sledece:

1) pokrenes funckiju
2) ona nesto odradi i pozove opet samu sebe
3) stanje procesa i svih pormenjivih ide na stek
4) ponavljaju se koraci 2 i 3 koliko treba (tj dok se ne ispuni neki uslov)
5) izlazi se iz najdubljeg nivoa rekurzije (recimo nivo N)
6) povlace se vrednosti sa steka
7) nastavlja se izvrsavanje funckije na nivou N-1
8) ponavljaju se koraci od 5

Rekurzivne funkcije su zgodne ako se resavaju zadaci tipa izlaz iz lavirinta posto ce isporbati sve mogucnosti... Nezgodno je jedino sto ako ne napises kako treba mozes da upadnes u beskonacnu petlju koja ce ti posle nekog vremena pojesti stek i onda ce puci program 🙂
 
Znaci definitivno je resenje u tom call stack-u o kojem ja nisam nista znao, da mi je to spomenuo asistent bar jednom, shvatio bih o cemu se radi.... cak sam i sam pretpostavljao da postoji neka memorija pored u koju se stavljaju argumenti, samo mi nije jasno, kad se to sto se prosledi u taj stek vremenski odradi, al sad mi je jasno!

Hvala puno, na detaljnim objasnjenjima!
 
U principu nije ni morao da ti spominje stek... Dovoljno bi bilo da ti je samo rekao da se cuva stanje pri ulasku u sledeci nivo funkcije, a to je verovatno pricao kad je objasnjavao sta su funkcije, kako se koriste parametri i slicno... (mada mozda i nije) 😀
 
Nije! Bice da nije , al koliko ja vidim, ne mogu bas puno da se oslanjam na njihovo objasnjavanje, vec moram sam da kopam po netu i literaturama da bih nesto naucio... Nisu ovi kursevi na faxu bas nesto organizovani, nisu ni losi, al moglo bi ovo monogo bolje...
Kad sam pitao asistenta da mi objasni sta je rekurzija , on mi je rekao da sama rec rekurzija sve objasnjava pa da se ja je*** sa tim dok ne skontam... To im bas i nije fer, al nema veze...
 
rekurzija je od onih stvari koje tesko moze neko da ti objasni bolje nego sto sam naucis. ja sam imao veliki problem s tim kad kad sam ucio, najvise zbog toga sto se obicno demonstrira na primerima koje je mnogo lakse uraditi iterativno nego rekurzivno. al' kad krenes da radis sa grafovima, posebno drvetima i sl. pa ih uradis rekurzivno u tri reda, a onda probas iterativno... rekurzija ti postane najbolji drug.

i to si lepo primetio, zahteva dodatno procesorsko vreme i dodatnu memoriju, ali kad je savladas i koristis kad treba zahteva mnogo manje tvog vremena i zivaca.
 
Uglavnom, hvala svima na odgovorima, moj kolokvijum je prosao bezbolno i nisam morao da koristim rekurziju - hvala Bogu! Imao sam zadatak da napravim program koji pravi niz struktura u koje upisujem ime, prezime, adresu, dan.mesec.godinu rodjenja i na osnovu tih podataka za nekih n broj osoba napravim funkciju koja izbacuje podatke onih osoba koje su bik u horoskopu! 😀
 
Eh, uspomene... ja imao kolokvijum juče 😀

Napisao sam kao rešenje jednog zadatka (rekurzija kroz binarno drvo) metodu koja poziva samu sebe, pa još poziva drugu rekurzivnu metodu dva puta, a ona poziva samu sebe dva puta tokom izvršavanja. Znači, ako uđe neko duboko drvo stack će da bude srećan... 😀
 
Nekad je bilo bitno optimizovati i stack usage, ali danas... pa cak i najsitniji uredjaji nemaju neka ogranicenja stack-a.

Jedino gde ima smisla brinuti je kernel, posto je (za Windows) stack limitiran na 8/12/16KB (zavisi od verzija) i dan danas.
 
Eh, uspomene... ja imao kolokvijum juče 😀

Napisao sam kao rešenje jednog zadatka (rekurzija kroz binarno drvo) metodu koja poziva samu sebe, pa još poziva drugu rekurzivnu metodu dva puta, a ona poziva samu sebe dva puta tokom izvršavanja. Znači, ako uđe neko duboko drvo stack će da bude srećan... 😀
Zivo me zanima o cemu je bila rec 😀
 
Zadatak je bio: Metoda koja prima koren binarnog stabla (svaki čvor ima jedanu int vrednost) a ispisuje u konzoli vrednost svih čvorova od korena pa do čvora na najvećoj dubini.
Moje rešenje: Glavna metoda prvo poziva dodatnu metod za određivanje maksimalne dubine nad levim i desnim detetom i ako je leva maksimalna dubina >= desnoj ide levo, u suprotnom desno (i naravno ispisuje vrednost trenutnog čvora). Dodatna metoda vraća 0 ako dobije null, ako ne poziva samu sebe nad levim i desnim detetom trenutnog čvora, ako je levi rezultat >= desnom vraća 1 + levi rezultat (1 za trenutni čvor), u suprotnom 1 + desni rezultat.

Možda postoji efikasnije rešenje ali ovo mi je prvo palo na pamet, a nisam imao vremena da pametujem, jer pišemo na papirima, ne na računaru, a sat vremena za 10 teorijskih pitanja na zaokruživanje i 5 zadataka.
 
Ne mogu bas da ocenim efikasnost, ali ja bih nasao dubinu svakog cvora, pritom za svaki cvor pamtio putanju (odnosno prethodni cvor) odakle sam dosao do njega i pratio koji mi cvor ima najvecu dubinu. Kada se zavrsi taj algoritam pretrage tj. racunanja dubine za svaki, jednostavno bih ispratio putanju do roota.
 
Kako nema prednosti: štedi se struja, ne habaju se tastature, monitori duže traju, ne može da se desi da slučajno neko otvori MSDN umesto da nepotrebne podatke drži u glavi, ako radiš na računaru ne može da ti oduzme 5 poena na neku grešku u sintaksi... i tako. 🙂
 
Ne mogu bas da ocenim efikasnost, ali ja bih nasao dubinu svakog cvora, pritom za svaki cvor pamtio putanju (odnosno prethodni cvor) odakle sam dosao do njega i pratio koji mi cvor ima najvecu dubinu. Kada se zavrsi taj algoritam pretrage tj. racunanja dubine za svaki, jednostavno bih ispratio putanju do roota.

Pa tako moras 2x da prodjes kroz celo stablo 🙂

Najlaksi nacin je da prodjes kroz celo stablo i dok to radis pamtis sve cvorove kroz koje si prosao... Na pocetku duzinu najduzeg puta stavis na 0... Kada dodjes do kraja neke grane, vidis koliko elemenata ima i to uporedis sa duzinom najduzeg puta... Ako je veca onda to postaje najduzi niz i sacuvas taj niz negde... Kad rekurzija prodje kroz celo stablo imaces i najduzi put i njegove elemente... To je cela poenta rekurzije... Sve se resava preko samo jedne funkcije/metode
 
Kako nema prednosti: štedi se struja, ne habaju se tastature, monitori duže traju, ne može da se desi da slučajno neko otvori MSDN umesto da nepotrebne podatke drži u glavi, ako radiš na računaru ne može da ti oduzme 5 poena na neku grešku u sintaksi... i tako. 🙂
pa to je sve sto i meni pada napamet, ali nece biti da je to. a stvarno me zanima jer cu morati da se svadjam na tu temu i voleo bi da budem spreman. :d
 
Stvar je u lenjosti i neznanju vecine profesora i asistenata... Lakse je oceniti nesto na papiru pa oduzimati poene za sintaksne greske (koje ce ti svaki IDE detektovati) nego smisliti zanimljive zadatke i ispredavati to tako da ljudi shvate... Ne postoji nijedan razlog da se to ne polaze na kompjuteru... Sem toga, koliko ces cesto morati da napises kod na papiru? Zar postoji programer koji napise program na papiru i onda da daktilografu da ga ukuca?

BTW u moje vreme se desavalo da nekome proglase zadatak za netacan i da posle kad se zali i pita sta ne radi odgovore da pojma nemaju 🙂 Jos i prodju kroz kod i zakljuce da daje tacan rezultat... Samo sto nije isti kao njihovo resenje, a posto ne znaju dovoljno da bi sastavili dobre test slucajeve koji ce izbaciti losa resenja oslanjaju se na resavsku skolu... 🙂
 
... Lakse je oceniti nesto na papiru pa oduzimati poene za sintaksne greske (koje ce ti svaki IDE detektovati) nego smisliti zanimljive zadatke i ispredavati to tako da ljudi shvate...

Ovo baš i nije tačno. Zapravo, mnogo je lakše oceniti rad na računaru nego rad na papiru. Onaj ko je radio s obe metode (papir i računar) potvrdiće ovo što pričam.

S druge strane stalno se provlači "teorija zavere" kako profesori i asistenti mrze svoje učenike i studente, kako samo smišljaju načine da im "podmetnu nogu" itd. To takođe nije prava istina. Ima i takvih slučajeva ali oni se podvode baš pod taj termin SLUČAJ.

Najveći problem leži u samim studentima. Dolaze potpuno nespremni za visoko obrazovanje. Mnogi su čak i NEPISMENI, a poznavanje matematike im je na nivou IV razreda osnovne škole. Lako je raditi sa studentima koji hoće da uče. Na žalost takvih je VEOMA MALO. Neko je tu decu SLAGAO da bez fakulteta neće biti cenjeni i poštovani, da MORAJU da završe fakultet, višu školu itd.

A onda, zamislite situaciju, da vam u septembru neko (od nadležnih) postavi pitanje "Kolika je prolaznost na tvom ispitu?". To povlači drugi, mnogo veći, problem od onog problema sa nespremnim studentima. Ko je LUD da sam sebi seče granu na kojoj sedi? I sa ove strane katedre rade ljudi koji treba da prehrane svoje porodice. Stomak mi se prevrtao, milion puta, kada sam video ko je sve položio pojedine ispite, a da ne pričam o tome ko je sve došao do diplome visokog obrazovanja.

Sve ovo je veoma zamršeno, problem se nalazi s obe strane katedre, a ne samo sa jedne. 🙂

Izvinite za off, ali moram da branim struku. 😀
 
Poslednja izmena:
Ovo baš i nije tačno. Zapravo, mnogo je lakše oceniti rad na računaru nego rad na papiru. Onaj ko je radio s obe metode (papir i računar) potvrdiće ovo što pričam.

Nisi shvatio... Ono sto sam hteo da kazem je da ako bi se polagalo na racunaru profesori ne bi znali kako da ocene rad... Ako ne mozes da napravis sintaksnu gresku, kako da ti za to oduzima poene... Sem toga, zar ti mislis da svaki programer zna napamet sve funkcije i parametre za jezik koji koristi? Da bi profesor ocenio rad na racunaru potrebno je vise znanja... Zasto to kazem? Zato sto program moze da radi samo za odredjeni broj slucajeva, ali ne za sve... Profesor je taj koji mora da smisli setove ulaznih podataka koji ce testirati da li program zaista radi kako treba... Oni to ne znaju ili nece da rade...

Drugi problem kod ocenjivanja na papiru je da dobar broj asistenata nije dovoljno sposoban da kroz napisani algoritam prodje u glavi i onda priznaju samo ono sto je kopija zvanicnog resenja...

I trece, ne mislim da postoji teorija zavere... Jednostavno ceo sistem obrazovanja je u raspadu, kao profesori najcesce rade ljudi sa vrlo malo prakticne primene istog (sto neko vec rece: predaju samo oni koji nisu nasli drugi posao) koji su uz to i jako lose motivisani... Kad na to dodas i cinjenicu da cesto medju njima postoje klanovi, neprijateljstva itd shvatices da to nikako ne moze da napreduje... Pa prva cinjenica je da se npr dekan bira iz redova profesora... Odakle nekome ideja da ce bilo koji profesor sa npr ETF-a biti dobar u vodjenju fakulteta? To je pre posao za nekog ekonomistu ili pravnika... Druga cinjenica je da zbog klanova vecina profesora, pa ni dekan, nece da se zamera ostalima... Zato niko ne proverava ucinak tih istih profesora... Zato na fakultetima opstaju profesori koji je npr prolaznost studenata 3%.... Nije li logicno da ako godinu za godinom svega 30% ljudi polozi tvoj ispit da si ti los profesor i da te treba zameniti? S druge strane, ako imas prolaznost 100% i svi polazu u prvom roku onda ti mozda sistem ocenjivanja ne valja...

Sve ovo sto pricam ne pricam napamet... Ima tu i mog iskustva sa faxa, ali i sa drugih fakulteta posto su mi oba roditelja radila na istim, a cale je i sad dekan na jednom pa poznajem mnogo profesora...
 
Nisi shvatio... Ono sto sam hteo da kazem je da ako bi se polagalo na racunaru profesori ne bi znali kako da ocene rad... Ako ne mozes da napravis sintaksnu gresku, kako da ti za to oduzima poene... Sem toga, zar ti mislis da svaki programer zna napamet sve funkcije i parametre za jezik koji koristi? Da bi profesor ocenio rad na racunaru potrebno je vise znanja... Zasto to kazem? Zato sto program moze da radi samo za odredjeni broj slucajeva, ali ne za sve... Profesor je taj koji mora da smisli setove ulaznih podataka koji ce testirati da li program zaista radi kako treba... Oni to ne znaju ili nece da rade...

Nismo se razmeli, očigledno. Ja sam za varijantu da se programi pišu na računaru. Iznenadio bi se kada bi video koliko malo studenata može da se snađe i u takvom okruženju uz dozvoljen internet, help (neko je pomenu MSDN, to se podrazumeva)...

Drugi problem kod ocenjivanja na papiru je da dobar broj asistenata nije dovoljno sposoban da kroz napisani algoritam prodje u glavi i onda priznaju samo ono sto je kopija zvanicnog resenja...

Pa dobro, ovo su paušalne ocene. Kao i u svim drugim strukama i ovde ima boljih i lošijih.

I trece, ne mislim da postoji teorija zavere... Jednostavno ceo sistem obrazovanja je u raspadu, kao profesori najcesce rade ljudi sa vrlo malo prakticne primene istog (sto neko vec rece: predaju samo oni koji nisu nasli drugi posao) koji su uz to i jako lose motivisani... Kad na to dodas i cinjenicu da cesto medju njima postoje klanovi, neprijateljstva itd shvatices da to nikako ne moze da napreduje... Pa prva cinjenica je da se npr dekan bira iz redova profesora... Odakle nekome ideja da ce bilo koji profesor sa npr ETF-a biti dobar u vodjenju fakulteta? To je pre posao za nekog ekonomistu ili pravnika... Druga cinjenica je da zbog klanova vecina profesora, pa ni dekan, nece da se zamera ostalima... Zato niko ne proverava ucinak tih istih profesora... Zato na fakultetima opstaju profesori koji je npr prolaznost studenata 3%.... Nije li logicno da ako godinu za godinom svega 30% ljudi polozi tvoj ispit da si ti los profesor i da te treba zameniti? S druge strane, ako imas prolaznost 100% i svi polazu u prvom roku onda ti mozda sistem ocenjivanja ne valja...

Sve ovo sto pricam ne pricam napamet... Ima tu i mog iskustva sa faxa, ali i sa drugih fakulteta posto su mi oba roditelja radila na istim, a cale je i sad dekan na jednom pa poznajem mnogo profesora...

Nemaš pojma koliko si u pravu za ovo. Međutim, ovo je politika a ne struka.

I još jedna stvar, potrebno je praviti razliku između naučnog i praktičnog rada. Većina se bavi samo jednim od ova dva, a vrlo je mali broj koji su sposobni da spoje jedno s drugim.
 
I još jedna stvar, potrebno je praviti razliku između naučnog i praktičnog rada. Većina se bavi samo jednim od ova dva, a vrlo je mali broj koji su sposobni da spoje jedno s drugim.

To je glavni problem kod nas... Na Zapadu to se obicno resava preko seminarskih radova i prakticnog rada u firmama... Recimo moj ortak je u sklopu studija imao zadatak da na mainframe masini odradi neki program... Kod nas 95% studenata nece ni videti kako izgleda serverska soba na ETF-u, a da ne govorimo o necem kompleksnijem 🙂
 
Pa prva cinjenica je da se npr dekan bira iz redova profesora... Odakle nekome ideja da ce bilo koji profesor sa npr ETF-a biti dobar u vodjenju fakulteta? To je pre posao za nekog ekonomistu ili pravnika...

Eh, da je svet kao u toj bajci. Pa da su ekonomisti, pravnici, menadžeri dobri za vođenje firmi i institucija živeli bi mi mnogo bolje.

Ekonomista ili menadžer će da voditi fakultet za profit i sopstveni interes da ostane na poziciji. A pravi naučni radnik (pod tim ne smatram ekonomiste, menadžere, pravnike) će voditi fakultet za dobrobit studenata i nauke. Nema veze ako odmah ne zna šta sve i kako, naučiće polako, samo je važno da mu je nauka važnija od para.

Dokle god postoji novac, postojaće ljudi koji će hteti da ga se domognu preko tuđe grbače.
 
Poslednja izmena:
A pravi naučni radnik (pod tim ne smatram ekonomiste, menadžere, pravnike) će voditi fakultet za dobrobit studenata i nauke. Nema veze ako odmah ne zna šta sve i kako, naučiće polako, samo je važno da mu je nauka važnija od para

Znaci ti kad ti se pokvare kola pozoves programera koji ce, mada ne zna sve, usput to nauciti? Ljudi biraju svoj posao prema svojim sklonostima... Matematicara ili fizicara ne interesuje ekonomija, sociologija, pravo. politika... On to nikada nece nauciti zato sto ne zeli da nauci... Ne znam koje si godiste, ali kad sam ja bio na ETF-u dekan je bio profesor fizike koji, iako nije los ovako i dobar je profesor, nije imao nimalo smisla da bude dekan... Fakultetom se setalo obezbedjenje koje je maltretiralo studente i nekima cak i zabranjivalo ulaz, vrata u holu su bila vezivana lancima itd... Moje misljenje je da svuda treba da radi profesionalac, ali se to nece desiti sve dok se na pogresan nacin dolazi do mesta dekana...

A sto se misljenja da je nauka vaznija od para, pretpostavljam da se zezas ili da jos nisi izbacio iz glave mastarije iz mladosti (a mozda si jos uvek previse mlad)... Nauka ne finansira samu sebe... Drugi je finansiraju... Covek koji vodi firmu (a fakultet je firma) i vaznija mu je nauka od para ce ubrzo tu firmu dovesti do bankrota... Sta mislis zasto drzavni fakulteti propadaju? Mislis da je ljudima povoljnije da plate privatni fakultet nego da studiraju besplatno drzavni? Mislis da je tesko upisati se? Donja granica za upis je 31 poen... To je da si otprilike bio vrlo dobar 3.9 sve 4 godine... Mislis da je malo takvih ljudi?

Fakultet, kao i svaku drugu firmu, treba da vodi covek koji je skolovan za to... Ako mislis da nisam u pravu pokreni firmu pa ces videti... Cak i da se firma sastoji samo od jednog radnika (tebe) videces sta te ceka oko poreza, doprinosa itd... Da ne govorim ako ta firma ima 200 radnika, svaki sa svojim problemima, zahtevima itd...

Kao sto rekoh, kad ti se pokvari auto koga ces pozvati? Automehanicara ili komsiju programera?
 
@vampirbg
Cek polako. Svaki fakultet ima dekana, prodekane za nastavu, istrazivanja itd. i citavu menazeriju pravnika i ekonomista koji konsultuju dekana. Koliko mi je poznato i na najvecim fakultetima su dekani/direktori/predsednici ili kako se vec zovu profesori sa samog fakulteta ili univerziteta. Tacno je da covek treba da ima ideju za vodjenje fakulteta, ne kao taj tvoj profesor iz fizike, ali iskreno ja bih bio pomalo uvredjen da mi ekonomista vodi fakultet na kome studiram. Ipak je suvise posla vezano za samu delatnost fakulteta.

Zbog takve logike imamo samo neke ćate na mestima ministara vojske, telekomunikacija, infrastrukture i vidimo koliko nam dobro ide.

A sto se tice algoritma, ne prolazim dva puta. Prolazim jednom kroz celo stablo, i jednom samo ispratim putanju od lista do roota ili obrnuto i odstampam.Tehnicki i ti radis isto, samo sto cvorove pamtis u posebnoj strukturi.
 
Nazad
Vrh Dno