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 | |
|
14 | 472 | if (n <= 0) { |
15 | 8 | throw new IllegalArgumentException("On ne calcule que pour des nombres positifs"); |
16 | |
} |
17 | |
|
18 | |
|
19 | |
|
20 | 464 | if (n == 1 || n == 2) { |
21 | 20 | return 1L; |
22 | |
} |
23 | |
|
24 | |
|
25 | |
|
26 | 444 | Long valeur = map.get(n); |
27 | 444 | if (valeur != null) { |
28 | 232 | return valeur; |
29 | |
} |
30 | |
|
31 | |
|
32 | 212 | valeur = fibonacci(n - 1) + fibonacci(n - 2); |
33 | 212 | map.put(n, valeur); |
34 | 212 | return valeur; |
35 | |
|
36 | |
} |
37 | |
|
38 | |
} |