Mon code est ci-dessous, j'essaie d'appeler de manière récursive ma fonction de recherche binaire mais continue d'obtenir cette exception. J'essaie d'identifier la source du problème. Gardez à l'esprit que j'ai exclu mon code pour la création de la liste de tableaux pour la simplicité et parce que je sais qu'ils sont fonctionnels.Identification de l'exception dans le thread "principal" java.lang.StackOverflowError
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.math.*;
public class nickclass {
public static void main(String[] args) {
for(int i = 0; i <(int)listTest.size();i++)
{
binarySearchHelp(listTest2,(String)listTest.get(i),0,listTest2.size());
}
void binarySearchHelp(ArrayList list, String value, int left, int right) {
if (left > right)
System.exit(0);
int middle = (int) Math.floor(list.size()/2);
if (((String) list.get(middle)).compareTo(value) == 0)
System.out.println(list.get(middle));
else if (((String) list.get(middle)).compareTo(value) > 0)
binarySearchHelp(list, value, left, middle - 1);
else
binarySearchHelp(list, value, middle + 1, right);
}
}
}
Quelle est la meilleure méthode pour mettre fin à la fonction récursive? – Destreation
c'est une erreur si 'left' est plus grand que' right', donc je lancerais une exception - 'IllegalArgumentException' dans ce cas –
Oui mais si c'est égal au milieu et que je l'imprime, comment quitter la fonction? – Destreation