diff options
Diffstat (limited to 'challenge-136/abigail/java/ch-2.java')
| -rw-r--r-- | challenge-136/abigail/java/ch-2.java | 18 |
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) { |
