C++ i Java

Poželjno je da imaš bilo kakvo predznanje iz nekog programskog jezika pre upuštanje u Javu ili C++ pošto nisu baš jednostavni za totalne početnike. Međutim, kao što reče Filip, ne moraš. Moj prvi jezik je bio C++, a tek kasnije sam otkrio jezike poput Python-a i Ruby-a, mada ih nisam koristio puno jer nisam imao potrebu. Koji ćeš jezik da koristiš i nije toliko bitno, uči da razmišljaš kao programer.
 
ја сам запео код рекурзија. Никако не могу да их скапирам

Pokusaj da ih povezes sa pojmom matematicke indukcije...

Uzmimo jednostavan primer racunanja faktorijela...
Baza indukcije bi nam bila da za N = 1 (ili 0) vazi da je f(N = 1) = 1
Indukcijska hipoteza bi bila da pretpostavljamo da umemo da izracunamo faktorijel za velicinu ulaza N.
Indukcijski korak bi se odnosio na izracunavanje faktorijela broja N + 1 koristeci hipotezu (odnosno pretpostavku da umemo da izracunamo faktorijel broja N)
Ako pretpostavimo da nam fja f(N) vraca N!, (N + 1) mozemo predstaviti kao f(N) * (N + 1)

Kod:
int fakt(int n)
{
    if(n == 1) //uslov za izlazak iz rekurzije ce nam upravo biti baza indukcije
        return 1;
    return n * fakt(n - 1); //pretpostavimo da nam fakt(n - 1) vraca (n - 1)!. Za n! rezultat funkcije pomnoziti sa n, odnosno (n - 1)! * n = n!
}

A korektnost ovakvih rekurzivnih funkcija mozes ispitati veoma lako, jer se mogu modelovati matematicki (ovo opet nije sasvim tacno kod imperativne paradigme gde postoje bocni efekti, kod funkcionalnog programiranja je rekurzija mnogo prirodnija).

Ukoliko te bas zanima sta se desava u pozadini dok to radi, procitaj malo na netu o stek okvirima i nacinu pozivanja funkcija.

Ukratko, ovim uzastopnim rekurzivnim pozivima povecava se dubina rekurzije, odnosno stack okviri se nizu jedni na druge. Kad dodjemo do uslova za izlazak iz rekurzije, ovo sve krece da se razmotava, stek okviri se izbacuju iz steka, i vrednosti pocinju da se proracunavaju. Rekurzija se moze prirodno predstaviti pomocu stabla.
 
Poslednja izmena:

Back
Top