Coverage Report - com.dvp.tutoriel.fibonacci.MaCalculette
 
Classes in this File Line Coverage Branch Coverage Complexity
MaCalculette
63 %
12/19
57 %
8/14
7
 
 1  
 package com.dvp.tutoriel.fibonacci;
 2  
 
 3  
 import java.util.HashMap;
 4  
 import java.util.Map;
 5  
 
 6  12
 public class MaCalculette implements Calculette {
 7  
 
 8  1
         private static Map<Integer, Long> map = new HashMap<Integer, Long>();
 9  
 
 10  
         private final static double NOMBRE_OR = 1.61803398874989;
 11  
         private final static double RACINE_5 = 2.236067977499;
 12  
 
 13  
         public Long fibonacciAvecNombreOr(Integer n) {
 14  
                 // REGLE RG024.4
 15  0
                 if (n <= 0) {
 16  0
                         throw new IllegalArgumentException("On ne calcule que pour des nombres positifs");
 17  
                 }
 18  
 
 19  
                 // REGLE RG024.1 : f(1) = 1
 20  
                 // REGLE RG024.2 : f(2) = 1
 21  0
                 if (n == 1 || n == 2) {
 22  0
                         return 1L;
 23  
                 }
 24  
 
 25  0
                 final double nominateur = Math.pow(NOMBRE_OR, n);
 26  
 
 27  0
                 final double result = nominateur / RACINE_5;
 28  0
                 return Math.round(result);
 29  
         }
 30  
 
 31  
         @Override
 32  
         public Long fibonacci(Integer n) {
 33  
 
 34  
                 // REGLE RG024.4
 35  118
                 if (n <= 0) {
 36  2
                         throw new IllegalArgumentException("On ne calcule que pour des nombres positifs");
 37  
                 }
 38  
 
 39  
                 // REGLE RG024.1 : f(1) = 1
 40  
                 // REGLE RG024.2 : f(2) = 1
 41  116
                 if (n == 1 || n == 2) {
 42  5
                         return 1L;
 43  
                 }
 44  
 
 45  
                 // REGLE RG024.5
 46  
                 // REGLE RG024.6
 47  111
                 Long valeur = map.get(n);
 48  111
                 if (valeur != null) {
 49  58
                         return valeur;
 50  
                 }
 51  
 
 52  
                 // REGLE RG024.3.x
 53  53
                 valeur = fibonacci(n - 1) + fibonacci(n - 2);
 54  53
                 map.put(n, valeur);
 55  53
                 return valeur;
 56  
 
 57  
         }
 58  
 
 59  
 }