View Full Version : [java] mistero nella funzione...
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
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.
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ě?
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.