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