Pozdrav dobri ljudi! Do sad ste mi puno puta pomogli, i samo se vama mogu obratiti kad je u pitanju problem s programiranjem, posto ne poznajem nikog ko se bavi istim.
Dobio sam kod odnosno zadataka uradjen rekurzijom. Ja treba da to napisem iterativno, ali imam jedan problem pri ispisivanju rezultata iz NEPOZNATOG razloga, pa ako mozete da mi pomognete odgonetnuti gdje je problem. Evo rekurzivni kod:
private static int rec(int x, int y) {
if (x < 0) {
return rec(-x, y);
}
if (y < 0) {
return rec(x, -y);
}
if (x == 0) {
return 0;
}
if (x > y) {
return rec(y, x);
}
if (x == y) {
return x;
}
return rec(x, y - x);
}
A sada moj iterativni :
private static int iter(int x, int y) {
do { // first comparing of variables
if (x > y) { // when x larger than y; swap values
int z = y;
y = x;
x = z;
} else if (x < y) { //otherwise substract x from y
y = y - x;
}else if (x<0 && x<y){ // when x is smaller then null and smaller then y, multiply by -1 to get positive number
x*=-1;
}
} while (x != y); // do the same thing over and over again, as loong as they're different.
return x;
}
Kad pozovem obje metode radi uporedjivanja rezultata na vecini rezultata izbacuje isto rjesenje, ali ima jedan rezultat koji ne izbacuje dobro : Na parametre (512,-9) rekurzivno izbaci 1, a sa mojom (iterativnom) metodom ne izbaci nista? Ne razumijem u cemu je problem, isao sam na papiru korak po korak kroz algoritam i ne kapiram sta kompjuteru nije jasno? 512=x y=-9 ; x>y then swap places .. sad je x=-9 y=512 --> x<0 && x<y then x=x*-1 = 9 itd itd.. posto je sad x<y--> y=512-9.. i tako bi trebalo da radi sve dok ne izjednaci x i y.. Ali meni ne izbacuje nikakav rezultat?