m.distrutti
15-09-2007, 20:48
Salve a tutti,questo mio problema lo sto affrontando da diverse ore :
ho creato un semplice algoritmo divide et impera per contare le ricorrenze d un particolare elemento(senza usare i generics percio in questo caso e' una stringa)
all'interno di un array
la funzione rikorsiva e' questa :
public int countTargetDivideEtImpera(String[] vect,int i,int j){
int c = 0;
int middle;
if(i == j){
if (vect[i] == "aba")
c = 1;
else
c = 0;
return c;
}else{
middle = (i + j)/2;
return countTargetDivideEtImpera(vect,i,middle) + countTargetDivideEtImpera(vect,middle + 1,j);
}
}
il codice mi conta tranquillamente tutte le ricorrenze della stringa aba all'interno dell'array passato e fin qui funziona....dopo un po ho deciso d fare in modo ke la stringa ricercata venga scelta dall'utente con una acquisizione da tastiera e fin qui mi e' sembrata una cosa banale,basta aggiungere un parametro alla funzione e cambiare la stringa "aba" in una variabile :
public int countTargetDivideEtImpera(String[] vect,int i,int j,String target){
int c = 0;
int middle;
if(i == j){
if (vect[i] == target)
c = 1;
else
c = 0;
return c;
}else{
middle = (i + j)/2;
return countTargetDivideEtImpera(vect,i,middle,target) + countTargetDivideEtImpera(vect,middle + 1,j,target);
}
}
ecco qui sorge il problema....pure debuggando il programma al confronto:
vect[i] == target
un determinato elemento di vect kon indice i risulta essere uguale a target >_> ma nn va nel ramo true dell' if,va nell'else e ritorna 0
spero che qualk1 mi sia di aiuto e ringrazio in anticipo ^^'
ho creato un semplice algoritmo divide et impera per contare le ricorrenze d un particolare elemento(senza usare i generics percio in questo caso e' una stringa)
all'interno di un array
la funzione rikorsiva e' questa :
public int countTargetDivideEtImpera(String[] vect,int i,int j){
int c = 0;
int middle;
if(i == j){
if (vect[i] == "aba")
c = 1;
else
c = 0;
return c;
}else{
middle = (i + j)/2;
return countTargetDivideEtImpera(vect,i,middle) + countTargetDivideEtImpera(vect,middle + 1,j);
}
}
il codice mi conta tranquillamente tutte le ricorrenze della stringa aba all'interno dell'array passato e fin qui funziona....dopo un po ho deciso d fare in modo ke la stringa ricercata venga scelta dall'utente con una acquisizione da tastiera e fin qui mi e' sembrata una cosa banale,basta aggiungere un parametro alla funzione e cambiare la stringa "aba" in una variabile :
public int countTargetDivideEtImpera(String[] vect,int i,int j,String target){
int c = 0;
int middle;
if(i == j){
if (vect[i] == target)
c = 1;
else
c = 0;
return c;
}else{
middle = (i + j)/2;
return countTargetDivideEtImpera(vect,i,middle,target) + countTargetDivideEtImpera(vect,middle + 1,j,target);
}
}
ecco qui sorge il problema....pure debuggando il programma al confronto:
vect[i] == target
un determinato elemento di vect kon indice i risulta essere uguale a target >_> ma nn va nel ramo true dell' if,va nell'else e ritorna 0
spero che qualk1 mi sia di aiuto e ringrazio in anticipo ^^'