[ osmania @ 29.11.2007. 18:37 ] @
Code:
#include<iostream.h>
int rek(int i) {
double s=0.9;
if (i) 
s+=rek(i/10)+i%10
return int(s+0.5);
}
int main() {
cout << rek(2345);
}



kako ovo vraca 19 u biti me interesuje kad je rek (0) onda dolazi do return int (s + 0.5) sto znaci da bi trebalo da vrati 1 posto je int znaci vraca 1 i kad uvrstim 1 onda nije tacan rezultat, nego bukvalno je return int (s + 0.5) je 1,4 i kad se sve sabere i oduzme onda je tacan rezultat.
Molim jedan jasan odgovor inca pocecu da grizem c++ ....
hvala puno
[ vilyu @ 30.11.2007. 10:08 ] @
Rekurzije se redom pozivaju kao: rek(2345), rek(234), rek(23), rek(2), rek(0).

Code:

rek(0)    vraca int(0.9 + 0.5)          = 1
rek(2)    vraca int(0.9 + 1 + 2 + 0.5)  = 4
rek(23)   vraca int(0.9 + 4 + 3 + 0.5)  = 8
rek(234)  vraca int(0.9 + 8 + 4 + 0.5)  = 13
rek(2345) vraca int(0.9 + 13 + 5 + 0.5) = 19
[ osmania @ 30.11.2007. 14:56 ] @
hvala stari :)
[ osmania @ 05.12.2007. 09:25 ] @
jutro svima, de mi recite sta se ovde desava dodjem do pola i dalje ne mogu da skontam kojom forom dobije broj 6 hvala puno!!!


Code:
#include<iostream>
using namespace std;
int k = 1;
int f(int k) {
if (k == 0) return k;
else {
::k = ::k + 1;
int m = f(k-1);
return ::k + m;
}
}
int main() {
cout << f(2);
}
[ perun_ @ 05.12.2007. 21:27 ] @
Prvo, taj kod nece vratiti nista dok u main ne stavis
Code:
return 0

Inace:
Poziva se f(2)
Povecava se ::k na 2
m=f(1)
sada da nadjemo f(1):
povecava se se k na 3, i vraca da je f(1)=3
Sto znaci da je m=3 i u sledecem koraku: f(2)=::k+m=3+3=6

Jos nisi naucio rekurziju? tztztzt
[ osmania @ 06.12.2007. 12:36 ] @
ja ja ja mislim da je nikada necu skontati toliko me to shit buni nemoguce, ostalo sve ok ali ovo brrr.
hvala puno :)
[ perun_ @ 06.12.2007. 22:21 ] @
Vec sam te savetovao da se ne opterecujes previse rekurzijom. Retko kada ce ti biti potrbna, a i "leci' ce do tada..

Nema na cemu