Coverage Report - com.dvp.tutoriel.fibonacci.MaCalculette
 
Classes in this File Line Coverage Branch Coverage Complexity
MaCalculette
100 %
12/12
100 %
8/8
8
 
 1  
 package com.dvp.tutoriel.fibonacci;
 2  
 
 3  
 import java.util.HashMap;
 4  
 import java.util.Map;
 5  
 
 6  48
 public class MaCalculette implements Calculette {
 7  
 
 8  4
         private static Map<Integer, Long> map = new HashMap<Integer, Long>();
 9  
 
 10  
         @Override
 11  
         public Long fibonacci(Integer n) {
 12  
 
 13  
                 // REGLE RG024.4
 14  472
                 if (n <= 0) {
 15  8
                         throw new IllegalArgumentException("On ne calcule que pour des nombres positifs");
 16  
                 }
 17  
 
 18  
                 // REGLE RG024.1 : f(1) = 1
 19  
                 // REGLE RG024.2 : f(2) = 1
 20  464
                 if (n == 1 || n == 2) {
 21  20
                         return 1L;
 22  
                 }
 23  
 
 24  
                 // REGLE RG024.5
 25  
                 // REGLE RG024.6
 26  444
                 Long valeur = map.get(n);
 27  444
                 if (valeur != null) {
 28  232
                         return valeur;
 29  
                 }
 30  
 
 31  
                 // REGLE RG024.3.x
 32  212
                 valeur = fibonacci(n - 1) + fibonacci(n - 2);
 33  212
                 map.put(n, valeur);
 34  212
                 return valeur;
 35  
 
 36  
         }
 37  
 
 38  
 }