I have 2 class: RecursiveFibonacci and MemorizedRecursiveFibonacci. This is what I have so far.
RecursiveFibonacci Class
public class SimpleRecursiveFibonacci {
public BigInteger fibonacci(int n) {
if(n < 2) {
return BigInteger.ONE;
}
return fibonacci(n - 2).add(fibonacci(n - 1));
}
}
and MemorizedRecursiveFibonacci Class
public class MemoizedRecursiveFibonacci {
private Map<Integer, BigInteger> cache = new HashMap<>();
public BigInteger fibonacci(int n) {
if(n < 2) {
return BigInteger.ONE;
}
if(!cache.containsKey(n)){
BigInteger currentFibonacci = fibonacci(n - 2).add(fibonacci(n - 1));
cache.put(n, currentFibonacci);
}
return cache.get(n);
}
}
As I see, there are some duplicated code in MemorizedRecursiveFibonacci Class
if(n < 2) {
return BigInteger.ONE;
and
BigInteger currentFibonacci = fibonacci(n - 2).add(fibonacci(n - 1));
How can I keep it DRY? remove duplicated code?