aboutsummaryrefslogtreecommitdiff
path: root/challenge-136/abigail/java/ch-2.java
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-136/abigail/java/ch-2.java')
-rw-r--r--challenge-136/abigail/java/ch-2.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/challenge-136/abigail/java/ch-2.java b/challenge-136/abigail/java/ch-2.java
index f08384cf95..9b7bb38935 100644
--- a/challenge-136/abigail/java/ch-2.java
+++ b/challenge-136/abigail/java/ch-2.java
@@ -7,13 +7,23 @@
//
import java.util.*;
+import java.util.Hashtable;
+import java.util.Map;
public class ch2 {
+ static Map <String, Integer> cache = new Hashtable <String, Integer> ();
+
public static int count (int target, int this_fib, int prev_fib) {
- return target < this_fib ? 0
- : target == this_fib ? 1
- : count (target - this_fib, this_fib + prev_fib, this_fib) +
- count (target, this_fib + prev_fib, this_fib);
+ String key = target + ";" + this_fib;
+ if (!cache . containsKey (key)) {
+ cache . put (key,
+ target < this_fib ? 0
+ : target == this_fib ? 1
+ : count (target - this_fib, this_fib + prev_fib, this_fib) +
+ count (target, this_fib + prev_fib, this_fib)
+ );
+ }
+ return cache . get (key);
}
public static int count (int target) {