[ Bond123 @ 11.11.2015. 23:11 ] @
Imao sam jedan zadatak, malo vjezbao rekurziju pa nasao par problemcica. I dosao sam do problema da treba izracunati powerN, znaci stepen broja. Metoda se sastoji iz dva parametra (baza, eksponent). Ja sam to nekako intuitivno rijesio, napisao kod, pokusao i nekim slucajem radi. Nije bas da ne znam nikako kako radi, jer sam SAM napisao kod, ne kopirao, ali mi ima jedan ili dva dijela nejasna, pa ako neko moze da mi pojasni ovako prolaz kroz metodu. Radi se o Javi. Kod je sljedeci : public int powerN(int base, int n) { if(n==1){ return base;} if(n==0){ return 1;} if(n>1){ return base* powerN(base, n-1);} return base; } Ono sto ne razumijem: 1. prolaz kroz metodu ( za primjer (3,2)) n !=1 to preskace, ide dalje n!=0 ide dalje, n>1 ulazi u if blok i vraca znaci 3 * (ponovo poziva metodu)..2. prolaz kroz metodu za (3,1)..Sad dolazi do problema shvatanja! n je sada jednako 1 i treba da vrati bazu, zar ne? Zasto mi vraca 9, kad uopste nije vise prolazio kroz metodu i nije dosao do onog 3 *.. pa da pise 3 * 3.. Zasto mi ne vrati samo 3? Drago je meni da funkcionise, ali mi nije najjasnije ovo. Stavio sam samo return base, a base ostaje uvijek ista. Kako mi vrati 9 a ne 3? Nikako mi nije jasno kako ide taj zadnji korak metode, pa ako ima neko ko se duze bavi programiranjem da mi ovo malo pojednostavi? Hvala unaprijed! |