Bonjour,
Je viens d'écrire une fonction récursive en Java, pas de souci elle marche bien.
Mon soucis est que netbeans me dit qu'il manque un return, du coup j'ai fait un return null; à la fin tout en sachant qu'il ne sera jamais appelé.
Pourquoi il me dit ça ?
Voici ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    public HashMap<Double, Double> intersec(HashMap<Double, List<String>> tmpTable1, HashMap<Double, List<String>> tmpTable2, HashMap<String, Double> curve1, HashMap<String, Double> curve2, double nbRep){
        // on calcule le milieu des droites au (prix2-prix1)/2
        double milieu = (curve1.get("xb")-curve1.get("xa"))/2.0 + curve1.get("xa");
        // on calcule la valeur correspondante
        HashMap<Double, Double> res1 = this.calculNbRep(tmpTable1, new HashMap<Double, Double>(), milieu);
        HashMap<Double, Double> res2 = this.calculNbRep(tmpTable2, new HashMap<Double, Double>(), milieu);
 
        // on regarde si le prix ne change plus
        if(Math.abs(curve1.get("xb")-curve1.get("xa")) < 0.01){
            // on est sur l'intersection
            return res1;
        } else {
            if((nbRep-res1.get(milieu)) > res2.get(milieu)){
                // le point d'intersection est apres
                curve1.put("xa", milieu);
                curve1.put("ya", res1.get(milieu));
                curve2.put("xc", milieu);
                curve2.put("yc", res2.get(milieu));
                return intersec(tmpTable1, tmpTable2, curve1, curve2, nbRep);
            } else if((nbRep-res1.get(milieu)) < res2.get(milieu)){
                // le point est avant
                curve1.put("xb", milieu);
                curve1.put("yb", res1.get(milieu));
                curve2.put("xd", milieu);
                curve2.put("yd", res2.get(milieu));
                return intersec(tmpTable1, tmpTable2, curve1, curve2, nbRep);
            }
        }
        return null;
    }
Merci.