Coverage Report - com.dvp.tutoriel.fibonacci.MaCalculette4
 
Classes in this File Line Coverage Branch Coverage Complexity
MaCalculette4
100 %
16/16
100 %
8/8
3,333
 
 1  
 package com.dvp.tutoriel.fibonacci;
 2  
 
 3  
 import java.util.Map;
 4  
 
 5  
 public class MaCalculette4 implements Calculette {
 6  
 
 7  
         private static Map<Integer, Long> map;
 8  
 
 9  
         // Singleton (initialisation directe)
 10  2
         private static MaCalculette4 instance = new MaCalculette4();
 11  
         
 12  2
         private MaCalculette4 () {
 13  2
                 FibonacciDao dao = new FibonacciDao();
 14  2
                 map = dao.charger();
 15  2
         }
 16  
         
 17  
         public static synchronized MaCalculette4 getInstance() {
 18  2
                 return instance;
 19  
         }
 20  
         
 21  
         @Override
 22  
         public Long fibonacci(Integer n) {
 23  
 
 24  
                 // REGLE RG024.4
 25  84
                 if (n <= 0) {
 26  4
                         throw new IllegalArgumentException("On ne calcule que pour des nombres positifs");
 27  
                 }
 28  
 
 29  
                 // REGLE RG024.1 : f(1) = 1
 30  
                 // REGLE RG024.2 : f(2) = 1
 31  80
                 if (n == 1 || n == 2) {
 32  4
                         return 1L;
 33  
                 }
 34  
 
 35  
                 // REGLE RG024.5
 36  
                 // REGLE RG024.6
 37  76
                 Long valeur = map.get(n);
 38  76
                 if (valeur != null) {
 39  46
                         return valeur;
 40  
                 }
 41  
 
 42  
                 // REGLE RG024.3.x
 43  30
                 valeur = fibonacci(n - 1) + fibonacci(n - 2);
 44  30
                 map.put(n, valeur);
 45  30
                 return valeur;
 46  
 
 47  
         }
 48  
 
 49  
 }