Hey, on m'a demandé d'écrire une recherche binaire récursive pour ma classe de structure de données à l'université, mais j'ai un léger problème. Quand je cherche un nombre qui est hors limites (plus de 10 dans ce cas) il jette une exception hors limites. Je comprends pourquoi il le fait, parce que le tableau n'a pas plus de 10 espaces, mais je ne sais pas comment le contourner. Des idées?La recherche binaire récursive Java jette hors des limites l'exception?
Le tableau qui effectue une recherche est un tableau ordonné 1 - 10 (index 0 - 9).
public int recursiveBinarySearch(int[] anArray, int searchedNumber, int min, int max) {
if (min > max)
{
System.out.println(searchedNumber + " is not present in tha array.");
//return -1 to show that the value has not been found
return -1;
}
// find the centre of the array
int centre = (min + max)/2;
if (anArray[centre] == searchedNumber)
{
System.out.println(searchedNumber + " was found at index " + centre);
return centre;
}
if (anArray[centre] < searchedNumber)
{
return recursiveBinarySearch(anArray, searchedNumber, centre+1, max);
}
return recursiveBinarySearch(anArray, searchedNumber, min, centre-1);
}
La recherche binaire ne doit pas utiliser/2 il faut utiliser le bitwise >>. – Woot4Moo
En fait, il devrait utiliser >>>. – helpermethod
Pourquoi? Peu importe à quoi ressemblent les bits. Vous vous souciez de ce que le nombre est (et quelle est la moitié de celui-ci). Ce type d'optimisation devrait être laissé au compilateur/jvm. – ILMTitan