Recherche dichotomique de manière récursive, utilisé dans le cadre de l’implémentation de l’algorithme de dijkstra

public Router getRouter(String findRouter) {
    return this.recdicho(findRouter.toLowerCase(),1,listRouters.size()-1);     
}
    
/**
 * Fonction récursive de recherche dichotomique
 */
public Router recdicho(String findRouter, int debut, int fin) {      
        // Vérifie que l'interval de recherche n'est pas vide
        if(debut > fin){            
          return null;            
    }    
        
    // Détermine le milieu de l'intervalle        
    int milieu = (debut+fin)/2;        
    Router router = this.listRouters.get(milieu);
    String nom = router.getNom().toLowerCase();
    int compare = findRouter.compareTo(nom);
        
    if (compare > 0) // Appel récursif sur un intervalle strictement plus grand pour assurer la terminaison                    
                return this.recdicho(findRouter,milieu+1,fin);         
    if (compare < 0) // Appel récursif sur un intervalle strictement plus petit                
                return this.recdicho(findRouter,debut,milieu-1);    
            
    // Si ni inférieur ni supérieur alors égal            
    return router;          
}