Ciao a tutti sono nuova!!
Sto studiando programmazione ...pero' ho un problema con questa cosa qui sotto!
Spero che qualcuno mi aiuti grazie a tutti comunque:):):):)
ciaooooooooo
il problema dice : Scrivere un metodo Java che, ricevendo come parametri un
intero positivo P e un array A di interi, stabilisca se si possa ottenere il valore
P sommando parte delle componenti dell’array A (eventualmente anche tutte
o una sola, senza obbligo di contiguit`a). Ad esempio, il responso per
A = 2 0 5 7 5 -1 10 ,
dovr`a essere: negativo se P = 3 oppure P = 30; affermativo se P = 2,
P = 28, oppure P = 9 ;
io ho scritto cosi il metodo : pero'....leggete
public static boolean ottieniSommaDesirata( int[]x, int n )
{
assert n > 0;
if ( x == null || x.length == 0 ) return false;
return ottieniSommaDesirata( x, n, 0 );
}
private static boolean ottieniSommaDesirata( int[] x, int n,
int i // inizio parte inesplorata
)
{
if ( n == 0 ) return true;
if ( (x.length) - 1 == i )
return n == x[i];
if (ottieniSommaDesirata( x, n, i + 1 )) return true;
/* qui scarta la posizione i e prende quella i+1 // la mia domanda è questa
secondo quanto ho studiado con la ricorsione si procede a ritroso dal caso base, e via via risalendo si risolve il problema ma qui come si fa a risalire? cioe una volta che arrivo a torrente.length - 1 = i sono al caso base e dopo ? come faccio a sapere se era giusto scartare la posizione i ? */
return ottieniSommaDesirata( x, n- x[i],
i + 1 ); // qui non scarta la prende
}