PDA

View Full Version : [java] mistero nella funzione...


drago89
19-02-2010, 16:13
o sono stupido o non capisco la matematica di questo pezzo di codice:

public static int f(int x) {
if (x==0||x==1)
return x;
return f(x/2) + f(x%2) - x;
}

se io alla funzione metto f(5) come fa a ritornarmi -5?
a casa mia x/2 =2 , x%2=1.
sapete spiegarmi questo mistero di java?

Mantis-89
19-02-2010, 16:28
f(2) = -1 per cui avresti f(2) + f(1) - 5 ovvero -1 +1 -5

drago89
19-02-2010, 16:40
nono č un esercizio, cioč inserendo 5 il programma da come risultato -5

Oceans11
19-02-2010, 17:49
nono č un esercizio, cioč inserendo 5 il programma da come risultato -5

al di lŕ del fatto che č un esercizio o meno, č giusto quello che dice Mantis-89
Se guardi bene l'ultima riga di codice, puoi notare due chiamate alla funzione f stessa (ricorsione).

anche a casa mia x/2=2 e x%2=1 con x=5, ma nel codice che hai postato devi poi calcolarne la f.

ndakota
19-02-2010, 17:52
da f(5)
hai f(2) + f(1) - 5 // -1 + 1 -5
da f(2)
hai f(1) + f(0) - 2 // 1 + 0 - 2 = -1

te capě?

drago89
19-02-2010, 18:09
da f(5)
hai f(2) + f(1) - 5 // -1 + 1 -5
da f(2)
hai f(1) + f(0) - 2 // 1 + 0 - 2 = -1

te capě?

grazie 10 000, avevo completamente dimenticato che esistono le ricorsioni XDXDXDXD